вызов метода из Java-файла внутри банки - PullRequest
1 голос
/ 24 августа 2011

У меня есть JAR-файл, который я динамически загружаю во время выполнения моего Java-файла (скажем, my.java ). Я делаю это так:

File newFile = new File("path");

JarFile newJar= new JarFile(newFile);

Теперь внутри этого jar-файла есть определенный файл Java, имя которого я знаю ( скажем known.class ). Я хочу создать объект этого известного класса и вызвать внутри него метод из my.java.

Я не уверен, как это сделать. Может ли кто-нибудь помочь? Я пытался смотреть онлайн, но не нашел ничего полезного.

Спасибо.

Ответы [ 2 ]

1 голос
/ 24 августа 2011

Вам нужно создать URLClassLoader, а не JarFile.Чтение документации для ClassLoader поможет вам, а также для Class.

1 голос
/ 24 августа 2011

Вам нужен файл .class (скомпилированный код Java) внутри jar, а не файл .java.Если у вас есть это, добавьте .jar к вашему classpath или к одному из каталогов в вашем classpath, и тогда вы можете просто ссылаться на Object из вашего Java-кода.

Т.е.:

MyObject newObj = new MyObject();

Вот как вы указываете jar в пути к классам:

java -classpath ".;myjar.jar" org.mine.MyClass

Редактировать: Поскольку вы не хотите изменять путь к классам, попробуйте что-то вроде этого:

File file  = new File("/path/to/myjar.jar");
URL url = file.toURL();  
URL[] urls = new URL[]{url};
ClassLoader cl = new URLClassLoader(urls);

Class cls = cl.loadClass("org.mine.myclass")
...