使用 URLClassLoader 动态加载 JAR?
我有一个程序需要能够在运行时动态加载 JAR - 环顾四周后我相信它使用了 URLClassLoader,但我不确定如何让它工作。 JAR“openup.jar”与程序位于同一目录中。
理想情况我希望能够加载这个 JAR,而不必指定其中的每个单独的类。
I have a program which needs to be able to dynamically load JARs at runtime - after looking around I beleive this uses URLClassLoader, but I'm not sure how to get it to work. The JAR "openup.jar" is in the same directory as the program.
Ideally I would like to be able to load this JAR without having to specify each individual class inside it.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我成功使用的内容:
中确实提出了几乎相同的解决方案我应该如何在运行时动态加载 Jas?
What I successfully used:
An almost identical solution is indeed presented in How should I load Jars dynamically at runtime?
这里我解释一下创建 jar 然后在另一个项目中动态加载 jar 的完整过程:
创建 jar 的步骤:
包 newJar.com.example;
public class MyClass {
}
动态加载 jar 的步骤:
创建一个新项目并添加以下代码:
公共类自定义类{
公共自定义类() {
// TODO 自动生成的构造函数存根
}
公共无效getCall(文件myJar){
<前><代码>尝试{
URLClassLoader 加载器 = new URLClassLoader(new URL[] { myJar.toURI().toURL() },
CustomClass.class.getClass().getClassLoader());
类 classToLoad = Class.forName("newJar.com.example.MyClass", true, loader);
System.out.println(classToLoad);
方法方法 = classToLoad.getDeclaredMethod("helloWorld");
对象实例 = classToLoad.newInstance();
对象结果 = method.invoke(instance);
} catch (MalformedURLException | ClassNotFoundException | NoSuchMethodException | SecurityException
|实例化异常 |非法访问异常 |非法参数异常
|调用目标异常 e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
公共静态无效主(字符串[] args){
// TODO 自动生成的方法存根
}
}
这就是它如何使用 jar,如果 jar 位于服务器上,则可以提供服务器路径而不是本地路径。
Here I am explaining the full process of creating a jar and then loading a jar dynamically in another project:
Steps to create jar:
package newJar.com.example;
public class MyClass {
}
Steps to load the jar dynamically:
Create a new project and add below code:
public class CustomClass {
public CustomClass() {
// TODO Auto-generated constructor stub
}
public void getCall(File myJar) {
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
This is how it can make use of the jar and if the jar is on the server then can give the server path instead of the local path.