【发布时间】:2020-03-27 19:51:20
【问题描述】:
我有两个 Jar 文件 假设 A.jar 和 B.jar
在 A.jar 里面我有一个 Js 文件,即 abc.js,其结构与动态 web 项目结构相同。
前-wepapp/resources/js/abc.js
我想在另一个 Jar 上读取这个 Js 文件,即 B.jar。 并且 A.jar 不包含在 B.jar 中,它们都是使用 Java 代码的单独 Jar。
【问题讨论】:
我有两个 Jar 文件 假设 A.jar 和 B.jar
在 A.jar 里面我有一个 Js 文件,即 abc.js,其结构与动态 web 项目结构相同。
前-wepapp/resources/js/abc.js
我想在另一个 Jar 上读取这个 Js 文件,即 B.jar。 并且 A.jar 不包含在 B.jar 中,它们都是使用 Java 代码的单独 Jar。
【问题讨论】:
如我所见,here 描述了同样的问题(或here)。 我想它应该对你有帮助。
编辑
来自这些链接:
解决方案 1
使用类路径通配符。
jsvc -cp globalclasspath/*:daemons/service.jar (...)
解决方案 2
要读取不在类路径上的 JAR 中的数据,请使用 URLClassLoader。一般算法是这样的:
为了在类路径中查找 JAR,我使用了 StackOverflow 文章“Get a list of resources from classpath directory.”中的 ResourceList
解决方案 3
在这种情况下,您需要在类路径中添加两个 jar 并执行以下命令 - 其中 com.schemas.Loader 将是您的 Loader 类。
java -cp a.jar;b.jar com.schemas.Loader
然后你就可以得到资源文件了:
InputStream is = getClass().getResourceAsStream("/com/schemas/your-file.js");
【讨论】: