2012-04-18 45 views
5

我打算使用另一個jar中包含的jar來執行jar命令。如何從jar中執行jar?

public void obfuscate() 
{ 
    try 
    { 
     String jre = "\"" + System.getProperty("java.home") + "\\bin\\javaw.exe" + "\""; 
     String jar = " -jar"; 
     Runtime.getRuntime().exec(new String[] { jre, jar.trim(), "/lib/allatori.jar /lib/config.xml" }); 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
} 

allatori.jar文件包含在我的main.jar文件作爲一種資源:

該命令將使用類似的代碼自動混淆一個Java jar文件。還包括​​3210文件。

如何運行我的命令,以便它執行包含的jar文件? main.jar文件

文件夾結構:

- main.jar 
    | 
    |- main_class.class 
    |- lib/ 
     |- allatori.jar 
     |- config.xml 
     |- jarToObfuscate.jar 

回答

1

在運行之前,您一定要將它解壓到jar外。

1

肯定。在外面複製它,創建一個類加載器,找到你想要開始的類,然後離開你。在它仍然存在的地方?好吧,你必須編寫自己的代碼來將類文件從嵌入式jar文件中提取出來,並將它們提供給類加載器,可能你必須從頭開始編寫它。

+0

*「可能你必須從頭開始寫。」*請參閱[Fat Jar](http://fjep.sourceforge.net/)*「One-JAR選項集成了一個專門的類加載器,它可以在jar中處理jar文件。」*&[JarClassLoader](http: //www.jdotsoft.com/JarClassLoader.php)*「類加載器用於從頂級JAR和頂級JAR內的JAR加載類,本地庫和資源。」*只是主要搜索中的一些頂級點擊引擎.. – 2012-04-18 20:53:40

+0

最簡單的方法可能會創建一個jar programaticaly的副本,然後使用Runtime.exec運行它,然後刪除它。你對那個怎麼想的? – Manitoba 2012-04-19 07:06:10