2016-12-01 3 views
0

Я пишу некоторые строки в Java для запуска .jar файл из ресурса во время выполнениякак загрузить MainClass фляги файл с именем из ресурса

первый я получить банку заполнить

// create FileInputStream object 
InputStream fileInputStream = TestCL.class.getResourceAsStream("test.jar"); 

Создать байтовый массив

byte rawBytes[] = new byte[fileInputStream.available()]; 

Чтобы прочитать содержимое файла в массив байтов

fileInputStream.read(rawBytes); 

, как я могу загрузить основной класс из этого FileInputStream


это мой тест, чтобы вызвать метод из класса, как я может сделать этот пример с файлом jar?

package testcl; 

import java.io.InputStream; 

public class TestCL extends ClassLoader { 

    public static void main(String args[]) throws Exception { 
     TestCL javaClassLoader = new TestCL(); 
     javaClassLoader.load(); 

    } 

    public void load() throws Exception { 

     // create FileInputStream object 
     InputStream fileInputStream = TestCL.class.getResourceAsStream("ClassLoaderInput.class"); 
     byte rawBytes[] = new byte[fileInputStream.available()]; 
     fileInputStream.read(rawBytes); 

     // Load the target class 
     Class<?> regeneratedClass = this.defineClass(rawBytes, 0, rawBytes.length); 

     // Getting a method from the loaded class and invoke it 
     regeneratedClass.getMethod("printString", null).invoke(regeneratedClass.newInstance(), null); 
    } 

} 
+0

какого рода "нагрузки"? Загрузить как полезный класс через «ClassLoader» или загрузить байты? (jar - это zip-файл, вы можете использовать простой старый почтовый индекс, чтобы изучить его) – zapl

+0

ys bro, с ClassLoader, но без создания файла на жестком диске и называть его URL-адресом или другом – joseph

+0

Посмотрите на https: // docs. oracle.com/javase/tutorial/deployment/jar/jarclassloader.html - 'Url' может быть' TestCL.class.getResource ("test.jar") ', не уверен в этом. Cound также заключается в том, что вам нужно прикрепить этот url с помощью jar: ' – zapl

ответ

0

Попробуйте загрузить класс и вызвать основной метод или просто попытаться запустить его из cmd.

Попробуйте этот код:

Class<?>[] cArgs = new Class[1]; 
    cArgs[0] = java.lang.String.class; 
    URL url = new URL("// enter the .jar path"); 
    URL[] urls = new URL[] { url }; 
    ClassLoader cl = new URLClassLoader(urls); 
    InputStream fileInputStream = cl.getResourceAsStream("test.jar"); 
    Method mainMethod = cl.loadClass("//enter class name").getMethod("main", cArgs[0]); 
+0

ok, как я могу получить основной класс? Я имею дело с InputStream obj – joseph

+0

посмотреть мой тестовый класс bro – joseph

Смежные вопросы