gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 12:12:07 27 4
gpt4 key购买 nike

我有两种获取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/,它会返回 /home/user/MyJar.jar,即使 MyJar.jar 路径是 '/home/user/Documents/test 文件夹/'.

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

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

如何在 Linux 中以与在 Windows 和 Mac 中相同的方式获取绝对路径,并且不使用 %20 作为空格替换?

最佳答案

我不确定为什么你在第一个解决方案中将你的 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 会在生产中抛出)

关于java - 如何在 Linux 中使用 java 命令获取当前正在执行的 jar 的带空格的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39681904/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com