如何从jar读取外部xml文件

时间:2010-09-08 14:15:34

标签: java jar executable-jar

我需要从jar可执行文件中的java应用程序中读取外部XML文件 如果我从控制台(java -jar package.jar)吃午餐它可以正常工作,但是如果我通过双击(Java Platform SE二进制文件)来吃午餐它就无法工作。
我有相对路径的这个问题。 凭借绝对的道路,它可以双向运作。

5 个答案:

答案 0 :(得分:4)

您需要将XML切片的(JAR相对)路径添加到Class-Path文件中的MANIFEST.MF条目。此条目包含有关JAR的运行时类路径的信息。假设您希望将XML与JAR文件本身放在同一文件夹中,以下内容就足够了:

Class-Path: .

(不要忘记在MANIFEST.MF文件的末尾添加一个空行)

然后,您可以使用Class#getResource()ClassLoader#getResource()将其作为类路径资源获取。第一个就足够了。

URL xmlResource = getClass().getResource("/filename.xml");
File xmlFile = new File(xmlResource.getPath());
// ...

答案 1 :(得分:1)

将该文件添加到JAR清单中的类路径,并将其作为输入流读取。

答案 2 :(得分:1)

答案 3 :(得分:0)

(new File(".")).getAbsolutePath();

应该给你jar路径。将其打印出来进行双重检查,然后将相对路径构建到其上。

答案 4 :(得分:0)

如果不知道您正在运行什么操作系统,很难给出准确的答案。

一般的答案是修改启动程序(桌面上的图标),以便指定初始工作目录与从shell运行命令时使用的目录相同。