2012-04-18 31 views
5

Başka bir kavanoza dahil olan bir kavanoz kullanarak bir kavanoz komutu yürütmeyi planlıyorum.Kavanozun içinden nasıl kavanozu yürütürüm?

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 dosya bir kaynak olarak benim main.jar dosyasında yer almaktadır:

komut otomatik benzer bir kod kullanarak bir Java kavanoz dosyası allak edecektir. config.xml dosya da dahildir.

Komutumu, dahil edilen jar dosyasını yürütecek şekilde nasıl çalıştırabilirim? main.jar ait

Klasör yapısı:

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

cevap

1

Çalıştırmadan önce mutlaka kavanozun dışına çıkarmanız gerekecektir.

1

Tabi. Dışarıya kopyalayın, bir sınıf yükleyici oluşturun, başlamak istediğiniz sınıfı bulun ve giderin. Hala oradayken yerinde mi? Sınıf dosyalarını gömülü jar dosyasının dışına çıkarmak ve bunları bir sınıf yükleyiciye sunmak için kendi kodunuzu yazmanız gerekir, muhtemelen bunu sıfırdan yazmanız gerekir.

+0

* "Muhtemelen sıfırdan yazmak zorundasınız" * Bkz. [Şişman Kavanoz] (http://fjep.sourceforge.net/) * "One-JAR seçeneği, bir kavanoz içindeki jar dosyalarını işleyen özel bir Class-Loader'ı entegre eder." * & [JarClassLoader] (http: //www.jdotsoft.com/JarClassLoader.php) * "En iyi JAR içindeki JAR'lardan ve JAR'lardan sınıfları, yerel kitaplıkları ve kaynakları yüklemek için kullanılan sınıf yükleyicisi." * büyük bir aramanın en üst isabetlerinden sadece birkaçı motor .. –

+0

Muhtemelen en kolay yolu, jar programın bir kopyasını oluşturmak, daha sonra Runtime.exec ile çalıştırmak ve daha sonra silmek olacaktır. Bunun hakkında ne düşünüyorsun? – Manitoba

İlgili konular