如何获取正在运行的 JAR 文件的路径?

2022-08-31 04:13:13

我的代码在 JAR 文件中运行,比如说 foo.jar,我需要知道,在代码中,正在运行的 foo.jar在哪个文件夹中。

因此,如果 foo.jar 在 中,无论我当前的工作目录是什么,我都希望获取该路径。C:\FOO\


答案 1
return new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation()
    .toURI()).getPath();

将“MyClass”替换为您的类的名称。

显然,如果您的类是从非文件位置加载的,这将做一些奇怪的事情。


答案 2

最适合我的解决方案:

String path = Test.class.getProtectionDomain().getCodeSource().getLocation().getPath();
String decodedPath = URLDecoder.decode(path, "UTF-8");

这应该可以解决空格和特殊字符的问题。


推荐