2012-04-18 15 views
5

Ho intenzione di eseguire un comando jar utilizzando un jar incluso in un altro jar.Come si esegue un barattolo all'interno di un barattolo?

Il comando offuscare automaticamente un file jar Java utilizzando il codice simile a:

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 file è incluso nel mio main.jar file come una risorsa. È incluso anche il file config.xml.

Come posso eseguire il mio comando in modo che esegua il file jar incluso?

Struttura delle cartelle di main.jar:

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

risposta

1

Dovrai sicuramente disimballarlo fuori dal barattolo prima di eseguirlo.

1

Certo. Copialo all'esterno, crea un classloader, trova la classe con cui vuoi iniziare e via. Sul posto mentre è ancora lì? beh, dovresti scrivere il tuo codice per estrarre i file di classe dal file jar incorporato e renderli disponibili per un programma di caricamento classi, probabilmente dovresti scriverlo da zero.

+0

* "probabilmente dovresti scriverlo da zero." * Vedi per es. [Fat Jar] (http://fjep.sourceforge.net/) che * "L'opzione One-JAR integra un caricatore di classi specializzato .. che gestisce i file jar all'interno di un jar." * & [JarClassLoader] (http: //www.jdotsoft.com/JarClassLoader.php) * "Il programma di caricamento classi per caricare classi, librerie native e risorse dal JAR in alto e da JAR nel JAR in alto." * Solo alcuni dei migliori successi in una ricerca principale motore .. –

+0

Il modo più semplice sarebbe probabilmente quello di creare una copia del jar programaticaly, quindi eseguirlo con il Runtime.exec ed eliminarlo dopo. Cosa ne pensi? – Manitoba

Problemi correlati