【发布时间】:2023-03-31 08:08:01
【问题描述】:
我正在尝试在 URLClassLoader 中加载 JAR 文件。这个 JAR 文件存储在我的项目的资源中,当我使用 maven 运行我的项目时,它可以使用以下代码正常工作:
new URLClassLoader(
new URL[]{MyClass.class.getClassLoader().getResource("dependencies/dependency.jar")},
ClassLoader.getSystemClassLoader().getParent()
);
但是,当我使用mvn clean install 构建项目然后尝试使用java -jar myapp.jar 运行生成JAR 时,似乎dependency.jar 没有加载。 dependency.jar 文件已正确存储在 dependencies/dependency.jar 下的项目 JAR 中,但未被读取。
我假设它不能从 JAR 文件中加载,但它们是一种解决方法吗?
我认为一个解决方案是使用getResourceAsStream,但我需要将此流转换为 URL。
如果可能的话,我想使用一个不涉及创建临时文件来存储dependency.jar 内容的解决方案。
【问题讨论】:
-
dependency.jar 位于您的 jar 文件中吗?如果有,具体在哪里?
-
是的,它在我项目的资源中,所以在构建的 JAR 中它位于
dependencies/dependency.jar -
你试过 MyClass.class.getResource("/dependencies/dependency.jar") 吗?
-
那么它甚至不能使用 maven ^^'
-
是,但使用 java -jar myapp.jar
标签: java maven jar dependencies