1

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

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

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

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

4

3 回答 3

2

jar 文件只是 zip 文件。因此,谷歌以如何读取 zip 文件为例。或者看看 API ZipInputStream

于 2013-01-18T22:30:42.703 回答
2

读取嵌入式资源的最简单选择是使用Class.getResourceClass.getResourceAsStream

根据您的需要,我可以想出几种方法来实现这一点。

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

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

编辑 有人指出,显然-cp使用上述命令忽略了参数,但是,如果您包含主类,它将起作用...... java -cp com.me.Y.jar -jar com.me.X.jar com.me.x.Main(例如)

如果这不方便,您可以添加com.me.Y.jarcom.me.X.jar 清单的类路径中,该路径会自动com.me.Y.jar为您包含在内。

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

URL[] urls = new URL[]{new File("/path/to/com.me.Y.jar").toURI().toURL())};
URLClassLoader classLoader = new URLClassLoader(urls);
URL resource = classLoader.findResource("/config/conf.txt");

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

于 2013-01-18T23:19:42.140 回答
1

获取 URL 的代码

URL configURL = this.getClass().getResource("/config/conf.txt");

Manifest.mfcom.me.X.jar

请参阅将类添加到 JAR 文件的类路径

Main-Class: ...
Class-Path: com.me.Y.jar
于 2013-01-18T22:43:57.750 回答