2012-04-18 16 views
5

Mam zamiar wykonać polecenie jar za pomocą słoika, który jest zawarty w innym słoiku.Jak wykonać słoik z wnętrza słoika?

Komenda automatycznie zaciemniać pliku JAR Java przy użyciu kodu podobnego do:

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 plik znajduje się w moim pliku main.jar jako zasób. Plik config.xml jest również dołączony.

Jak mogę uruchomić moje polecenie, aby wykonywał dołączony plik jar?

Struktura folderów main.jar:

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

Odpowiedz

1

Z pewnością będziesz musiał rozpakować go poza słojem przed uruchomieniem.

1

Jasne. Skopiuj go na zewnątrz, utwórz program ładujący klasy, odszukaj klasę, od której chcesz zacząć, i odejdź. W miejscu, gdy wciąż tam jest? cóż, musiałbyś napisać własny kod, aby wyciągnąć pliki klas z osadzonego pliku jar i udostępnić je programowi ładującemu klasy, prawdopodobnie musiałbyś napisać to od początku.

+0

* "prawdopodobnie będziesz musiał napisać to od nowa." * Zobacz np. [Fat Jar] (http://fjep.sourceforge.net/), który * "Opcja One-JAR integruje wyspecjalizowany program ładujący klasy .., który obsługuje pliki jar w słoiku." * & [JarClassLoader] (http: //www.jdotsoft.com/JarClassLoader.php) * "Program ładujący klasy do ładowania klas, natywnych bibliotek i zasobów z najlepszych plików JAR i plików JAR w górnej części JAR." * tylko kilka z najlepszych wyników wyszukiwania engine .. –

+0

Najprostszym sposobem byłoby prawdopodobnie utworzenie kopii słoika programistycznie, a następnie uruchomienie go za pomocą Runtime.exec i usunięcie go po. Co o tym myślisz? – Manitoba

Powiązane problemy