如何在Linux中使用java命令获取当前执行jar的空格路径?

时间:2016-09-24 23:27:23

标签: java linux jar

我有两种获取jar路径的方法

1)

File file = new File(new File(Main.class.getProtectionDomain().getCodeSource().getLocation().getPath()).getName());
String filename = file.getAbsolutePath().toString();

2)

String filename2 = Main.class.getProtectionDomain().getCodeSource().getLocation().toString().substring(6);

第一种方法适用于Windows和Mac,但在linux中,如果我的jar位于'/home/user/Documents/test folder/',它会返回我当前的工作目录+ jar文件

例如:如果我的终端位于/home/user/,即使MyJar.jar路径为/home/user/MyJar.jar,它也会返回'/home/user/Documents/test folder/'

第二种方法,对于每个操作系统,返回文件的正确路径,但空格由%20替换。

例如:/home/user/Documents/test%20folder/MyJar.jar

如何在Linux中获得绝对路径,就像我在Windows和Mac上一样,并且没有%20作为空间替换?

1 个答案:

答案 0 :(得分:2)

我不确定为什么你在第一个解决方案中将你的File双重包裹起来。

try {
    File f = new File(Main.class.getProtectionDomain().getCodeSource().getLocation().toURI());
    System.out.println(f.getAbsolutePath());
} catch (URISyntaxException ex) {
    throw new RuntimeException(ex);
}

(仅在Linux下测试)

(我认为URISyntaxException不会被投入生产)