Changeset 624
- Timestamp:
- 12/13/13 16:06:50 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/expeditee/actions/Misc.java
r623 r624 4 4 import java.awt.Desktop; 5 5 import java.awt.Image; 6 import java.awt.Point;7 6 import java.awt.Polygon; 8 7 import java.awt.image.BufferedImage; 9 8 import java.awt.image.VolatileImage; 10 import java.io.BufferedReader;11 9 import java.io.File; 12 10 import java.io.FileNotFoundException; 13 11 import java.io.IOException; 14 import java.io.StringReader;15 12 import java.lang.reflect.Method; 13 import java.net.URL; 14 import java.net.URLClassLoader; 16 15 import java.util.ArrayList; 17 16 import java.util.Collection; 18 17 import java.util.LinkedList; 19 18 import java.util.List; 19 import java.util.jar.Attributes; 20 import java.util.jar.JarFile; 20 21 21 22 import javax.imageio.ImageIO; … … 36 37 import org.expeditee.gui.TimeKeeper; 37 38 import org.expeditee.importer.FrameDNDTransferHandler; 38 import org.expeditee.io.ExaReader;39 import org.expeditee.io.ExaWriter;40 import org.expeditee.io.FrameWriter;41 39 import org.expeditee.io.WebParser; 42 40 import org.expeditee.io.flowlayout.XGroupItem; … … 44 42 import org.expeditee.items.ItemUtils; 45 43 import org.expeditee.items.Line; 46 import org.expeditee.items.Picture;47 44 import org.expeditee.items.Text; 48 import org.expeditee.items.XRayable;49 45 import org.expeditee.items.widgets.InteractiveWidget; 50 46 import org.expeditee.items.widgets.JfxBrowser; … … 1375 1371 FrameUtils.CreateDefaultProfile(UserSettings.UserName, homeFrame); 1376 1372 } 1373 1374 /** 1375 * Loads and runs an executable jar file in a new Thread 1376 * @param jar path to the jar file to run 1377 */ 1378 public static void runJar(String jar) throws Exception { 1379 File jf = new File(jar); 1380 if(!jf.exists()) { 1381 System.err.println("jar '" + jar + "' could not be found"); 1382 return; 1383 } 1384 JarFile jarFile = new JarFile(jf); 1385 1386 String mainClassName = (String) jarFile.getManifest().getMainAttributes().get(new Attributes.Name("Main-Class")); 1387 if(mainClassName == null) { 1388 System.err.println("jar '" + jar + "' does not have a Main-Class entry"); 1389 jarFile.close(); 1390 return; 1391 } 1392 jarFile.close(); 1393 System.out.println("Main-Class = " + mainClassName); 1394 1395 ClassLoader classLoader = ClassLoader.getSystemClassLoader(); 1396 1397 Method addURL = URLClassLoader.class.getDeclaredMethod("addURL", URL.class); 1398 addURL.setAccessible(true); 1399 addURL.invoke(classLoader, jf.toURI().toURL()); 1400 1401 final Class<?> jarClass = classLoader.loadClass(mainClassName); 1402 1403 final Method main = jarClass.getDeclaredMethod("main", String[].class); 1404 1405 new Thread(new Runnable() { 1406 public void run() { 1407 try { 1408 main.invoke(jarClass, new Object[] {new String[0]}); 1409 } catch (Exception e) { 1410 System.out.println("Failed to start jar"); 1411 e.printStackTrace(); 1412 } 1413 } 1414 }).start(); 1415 } 1377 1416 }
Note:
See TracChangeset
for help on using the changeset viewer.