我尝试检索可执行 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/