我有一个jar文件,我在执行java文件时动态加载(例如 my.java )。 我是这样做的:
File newFile = new File("path");
JarFile newJar= new JarFile(newFile);
现在这个jar里面有一个特定的java文件,我知道它的名字( say known.class )。 我想创建一个这个known.class的对象,并从my.java中调用一个方法。
我不知道该如何解决这个问题。任何人都可以帮忙吗? 我尝试在线查找,但没有找到任何帮助。
感谢。
答案 0 :(得分:1)
您需要在jar内部使用.class
文件(已编译的java代码),而不是.java
文件。如果你有这个,可以将.jar添加到类路径或类路径中的一个目录中,然后只需从Java代码中引用Object。
即:
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")
答案 1 :(得分:1)
您需要创建URLClassLoader
而不是JarFile
。阅读ClassLoader的文档可以帮助您,也可以使用Class
。