java - 如何获取我正在运行的 jar 文件所在目录的路径?

标签 java path directory executable

我尝试检索可执行 jar 文件所在目录的路径。 这意味着:我有以下结构:

 --> Application (this is a folder somewhere in my file system)
     --> application.jar (this is my java application
     --> SomeData (folder in the same directory like the application)
         --> some other folders
         ......

当我通过命令行启动 application.jar 时,我想解析 SomeData 文件夹中的一些文件。 在 https://stackoverflow.com/a/320595/1540630他们已经展示了如何获取正在运行的 jar 文件的当前路径,但是当我执行语句时:

System.out.println(XMLParser.class.getProtectionDomain().getCodeSource().getLocation().getPath());

...我只得到以下信息:

/.../Application/application.jar

但我只想拥有:

/.../Application/

最好在后面的步骤中说我需要

/.../Application/SomeData/SomeFolder/data.xml

有人可以帮帮我吗?

最佳答案

CodeSource.getLocation() 为您提供一个 URL,然后您可以创建与之相关的新 URL:

URL jarLocation = XMLParser.class.getProtectionDomain().getCodeSource().getLocation();
URL dataXML = new URL(jarLocation, "SomeData/SomeFolder/data.xml");

不能简单地执行 new File(...getCodeSource().getLocation().getPath()) 因为不能保证 URL 路径是所有平台上的有效 native 文件路径。如果可以的话,坚持使用 URL 并将 URL 直接传递给 XML 解析器会更安全,但是如果您确实需要 java.io.File,那么您可以使用 an idiom like this从 URL 创建一个。

关于java - 如何获取我正在运行的 jar 文件所在目录的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11613100/

相关文章:

python - 无法获取 __file__ Python 的实际目录

java - Grails 或 Play 如何检测更改和热重载类?

java - 如何在android中检测用户何时连接到wifi或移动互联网

c# - 在 WPF 中渲染清晰的线条

Python将url转换为目录

python - Python 中的目录统计信息

java - 如何在Android上获取本地网络中所有设备的IP地址和名称

java - Java 中的 1 行 IF 语句

Python - 从长路径获取文件名

wpf - 路径绘制和数据绑定(bind)