2012-04-18 3 views
5

別の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

実行する前に、必ず外に出してください。

1

確かに。それを外部にコピーし、クラスローダーを作成し、最初からやりたいクラスを見つけ出してください。それがまだそこにある間には?クラスファイルを組み込みjarファイルから取り出してクラスローダーが利用できるようにするための独自のコードを記述する必要があります。おそらく、最初から書き込む必要があります。

+0

*「おそらく、最初から書く必要があります。 [Fat Jar](http://fjep.sourceforge.net/)*「One-JARオプションは、jarファイルをjarファイル内で扱う特殊なClass-Loader ..を統合しています。」*&[JarClassLoader](http: //www.jdotsoft.com/JarClassLoader.php)*「トップJARとトップJAR内のJARからクラス、ネイティブライブラリ、リソースをロードするためのクラスローダー」*主要な検索のトップヒットのほんの一部エンジン.. –

+0

最も簡単な方法は、おそらく、programaricalyのjarファイルのコピーを作成し、Runtime.execでそれを実行し、それを削除することです。あなたはそれをどう思いますか? – Manitoba

関連する問題