相关疑难解决方法(0)

在java 9下运行时将jar添加到类路径

直到在运行时通过编程方式将所有人使用的外部jar添加到类路径:

URLClassLoader sysloader = (URLClassLoader) ClassLoader.getSystemClassLoader();
Method method = URLClassLoader.class.getDeclaredMethod("addURL", new Class[]{URL.class});
method.invoke(sysloader, new Object[]{file.toURI().toURL()});
Run Code Online (Sandbox Code Playgroud)

现在用java9我们有问题:

线程"main"中的异常java.lang.ClassCastException:java.base/jdk.internal.loader.ClassLoaders $ AppClassLoader无法强制转换为java.base/java.net.URLClassLoader

URLClassLoader 在Java 9中不再有效.在jdk9下如何以编程方式在运行时向类路径添加外部jar?

java jar classpath urlclassloader java-9

12
推荐指数
1
解决办法
3295
查看次数

在运行时动态加载jar?

我当前的java项目正在使用来自另一个项目(同一个包)的方法和变量.现在,另一个项目的jar必须在类路径中才能正常工作.我的问题是jar的名称可以并且会因为版本的增加而改变,并且因为你不能在manifest类路径中使用通配符,所以不可能将它添加到类路径中.所以目前启动我的应用程序的唯一选择是使用-cp命令行中的参数,手动添加我的项目依赖的另一个jar.

为了改善这一点,我想动态加载jar并阅读有关使用ClassLoader的信息.我为它阅读了很多例子,但是我仍然不明白如何在我的案例中使用它.

我想要的是加载一个jar文件,比方说,myDependency-2.4.1-SNAPSHOT.jar但它应该能够只搜索一个jar文件,myDependency-因为我已经说过版本号可以随时改变.然后我应该能够像我现在一样在我的代码中使用它的方法和变量(比如ClassInMyDependency.exampleMethod()).

任何人都可以帮助我,因为我已经在网上搜索了几个小时,但仍然没有得到如何使用ClassLoader来做我刚才解释的.

提前谢谢了

java classloader

5
推荐指数
1
解决办法
9596
查看次数

标签 统计

java ×2

classloader ×1

classpath ×1

jar ×1

java-9 ×1

urlclassloader ×1