gpt4 book ai didi

java - Runtime.exec() 失败,目录中有空间 (Java)

转载 作者:行者123 更新时间:2023-11-30 11:11:49 25 4
gpt4 key购买 nike

我试图通过获取文件的位置来在与我的 Jar 文件相同的目录中执行进程

private static File jarLocation = new File(Main.class.getProtectionDomain().getCodeSource().getLocation().getPath()).getParentFile();

然后调用

Runtime.getRuntime().exec("command", null, jarLocation);

这通常工作得很好,但是当路径中有空格时,我得到“目录名称无效”。我试图添加一些调试代码来打印目录的路径,该目录已将空格替换为“%20”(我假设是因为 ASCII 十六进制空格为 20)。有没有办法能够使用路径中有空格的目录?

最佳答案

getPath() 调用,即 URL.getPath(),不返回文件系统路径。它返回 URL 的路径部分。对于 file: URL,它将是一个 URL 编码的本地文件系统路径。如果该原始 URL 实际上是 file: URL,您需要使用 URI 和 URL 类,或自定义字符串处理,将其转换为本地文件系统路径,Runtime.exec () 可以一起工作。

这可能直接适用于您的情况。

File jarLocation = Paths.get(Main.class.getProtectionDomain().getCodeSource().getLocation().toURI()).toFile();

您还可以在 Converting Java file:// URL to File(...) path, platform independent, including UNC paths 查看讨论.

关于java - Runtime.exec() 失败,目录中有空间 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27241375/

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