如何从Java访问外部Jar中的资源/配置/文本文件?

时间:2013-01-18 22:27:01

标签: java jar osgi classloader embedded-resource

我在 com.me.X.jar 中运行程序。

在外部 com.me.Y.jar 中,我有一个配置文件,位于Jar根目录中的“ config / conf.txt ”。

如何从Java中以编程方式访问此配置文件?

com.me.Y.jar 当前未加载到内存中,仅由非代码资源组成。

3 个答案:

答案 0 :(得分:2)

jar文件只是zip文件。所以谷歌举例说明如何阅读zip文件。或者查看API ZipInputStream

答案 1 :(得分:2)

阅读嵌入资源的最简单方法是使用Class.getResourceClass.getResourceAsStream

根据您的需要,我可以考虑几种方法来实现这一目标。

com.me.Y.jar添加到类路径中。您可以在系统级别(不是真正推荐)或在推荐行...

执行此操作

java -cp com.me.Y.jar -jar com.me.X.jar

编辑有人指出,使用上述命令显然会忽略-cp参数,但是,如果包含主类,它将起作用... {{1} (例如)

如果这不方便,您可以将java -cp com.me.Y.jar -jar com.me.X.jar com.me.x.Main添加到com.me.Y.jar manifest's class path,这会自动包含com.me.X.jar

如果您不能这样做,可以使用com.me.Y.jar直接加载URLClassLoader ...

com.me.Y.jar

或者,如果您愿意,您可以使用java.util.JarFile简单地打开罐子,但这似乎很像用核武器破解核桃......恕我直言

答案 2 :(得分:1)

获取网址的代码

URL configURL = this.getClass().getResource("/config/conf.txt");
<{1}} 的

Manifest.mf

请参阅Adding Classes to the JAR File's Classpath

com.me.X.jar