我需要在 jar 可执行文件中从我的 java 应用程序中读取一个外部 XML 文件。
如果我从控制台(java -jar package.jar)午餐它工作正常,但如果我通过双击午餐它(Java 平台 SE 二进制)它不起作用。
我有相对路径的这个问题。使用绝对路径,它可以双向工作。
问问题
7847 次
5 回答
5
您需要将 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());
// ...
于 2010-09-08T14:45:42.663 回答
1
你可以试试这个: 获取可执行 JAR 之外的相对路径
于 2010-09-08T14:42:38.100 回答
1
将该文件添加到 JAR 清单中的类路径中,并将其作为输入流读取。
于 2010-09-08T14:24:26.937 回答
0
如果不知道您正在运行什么操作系统,很难给出准确的答案。
一般的答案是修改您的启动器(桌面上的图标),以便将初始工作目录指定为与从 shell 运行命令时使用的目录相同。
于 2010-09-08T14:43:15.523 回答
0
(new File(".")).getAbsolutePath();
应该给你jar路径。打印出来仔细检查,然后在上面建立你的相对路径。
于 2010-09-08T14:39:47.400 回答