有沒有方法可以在不使用Runtime.exec
的情況下從Java應用程序中啓動java類(並將其傳遞給類路徑和庫路徑)?從另一個Java應用程序啓動Java類
我看到: Launch a java application from another java application
,但需要能夠通過一個CLASSPATH和libary路徑。
我試圖製作一個用戶下載的啓動器,它會下載所需的文件,然後啓動它們。
謝謝
有沒有方法可以在不使用Runtime.exec
的情況下從Java應用程序中啓動java類(並將其傳遞給類路徑和庫路徑)?從另一個Java應用程序啓動Java類
我看到: Launch a java application from another java application
,但需要能夠通過一個CLASSPATH和libary路徑。
我試圖製作一個用戶下載的啓動器,它會下載所需的文件,然後啓動它們。
謝謝
https://stackoverflow.com/a/5575619/20394應解釋如何添加到庫路徑,仍然使用相同的JVM。
要添加到類路徑中,請創建您自己的URLClassLoader
並將其用於要加載的類,然後反射性地調用其啓動方法。
URLClassLoader classLoader = new URLClassLoader(
urlsToDirectoriesAndJars, getClass().getClassLoader());
Class<?> myMainClass = classLoader.findClass("pkg.path.for.MainClass");
Method main = myMainClass.getMethod("main", String[].class);
main.invoke(null, new Object[] { new String[] { "args", "for", "main" } });
您需要處理一些由反射API引發的異常,但這是它的要點。
如果類調用System.exit
,然後看看How to prevent calls to System.exit() from terminating the JVM?
哇,這就是我正在尋找的,謝謝。 – WookooUK 2012-01-27 11:30:13
你有沒有探討[Java Web Start的(http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136112.html )? – adarshr 2012-01-27 11:07:05
我希望用戶下載文件到他們機器上的任何地方,並將文件下載到他們的個人文件夾: windows%appdata%\ folderName mac/linux〜/ folderName – WookooUK 2012-01-27 11:09:19
@adarshr正是我在想什麼,但稍微[不同的鏈接](http://stackoverflow.com/tags/java-web-start/info)。它包含JWS上各種有用頁面的鏈接,包括Oracle自己的頁面。 – 2012-01-27 11:11:58