我正在com.me.X.jar中运行一个程序。
在外部com.me.Y.jar中,我有一个配置文件位于Jar 根目录的“ config/conf.txt ”中。
如何从 Java 中以编程方式访问此配置文件?
com.me.Y.jar当前未加载到内存中,仅由非代码资源组成。
我正在com.me.X.jar中运行一个程序。
在外部com.me.Y.jar中,我有一个配置文件位于Jar 根目录的“ config/conf.txt ”中。
如何从 Java 中以编程方式访问此配置文件?
com.me.Y.jar当前未加载到内存中,仅由非代码资源组成。
jar 文件只是 zip 文件。因此,谷歌以如何读取 zip 文件为例。或者看看 API ZipInputStream
读取嵌入式资源的最简单选择是使用Class.getResource
或Class.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.jar
到com.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
,但这看起来很像用核武器来破解核桃......恕我直言
URL configURL = this.getClass().getResource("/config/conf.txt");
Manifest.mf
的com.me.X.jar
请参阅将类添加到 JAR 文件的类路径。
Main-Class: ...
Class-Path: com.me.Y.jar