我正在使用 Runtime.getRuntime.exec() 方法来调用一个 exe。我用这种方法面临的问题是,当我通过一些 exe 路径(c:\JPN_char_folder\mypath\myexe.exe)和其他语言字符(ex.Japanese)“它说“系统找不到指定的文件”。会你请提出一些想法来解决这个问题?我什至尝试在转换为 UTF-8 后传递那个 exe 路径,但我仍然无法解决这个问题。
-罗伯特。
我正在使用 Runtime.getRuntime.exec() 方法来调用一个 exe。我用这种方法面临的问题是,当我通过一些 exe 路径(c:\JPN_char_folder\mypath\myexe.exe)和其他语言字符(ex.Japanese)“它说“系统找不到指定的文件”。会你请提出一些想法来解决这个问题?我什至尝试在转换为 UTF-8 后传递那个 exe 路径,但我仍然无法解决这个问题。
-罗伯特。
我不认为日语字符是问题。这是c:驱动器。
你需要这样写:
String path = "c:\\\JPN_char_folder\\mypath\\myexe.exe";
看看是否有帮助。
很可能您在某个地方遇到了编码问题。
路径值在这里有几个步骤:
沿着这个顺序有些地方出了点问题:-(。
很难说在哪里;您最好的选择可能是尝试在路径的每一步打印出值,看看哪里出错了。
至少在 Java 内部,您可能应该将 String 打印为文本和 Unicode 代码点列表(使用String.codePointAt
)。这样您就可以看到 Java 使用的真实数据。
另一种方法:
现在您可以比较两个结果;这应该让你知道路径在哪里搞砸了。笔记:
路径是否包含基本多语言平面 (BMP) 之外的字符?Java 处理这些有点笨拙,因此您需要格外注意。也许你可以先检查一下。
即使您使用的是 Windows,也可以在指定目录时使用斜杠。这将帮助您逃离反斜杠地狱。
例如,在我的系统上,7z
位于 directory 中c:\Program Files\7-Zip\
。
执行这个
File file = new File("c:/Program Files/7-Zip/7z.exe");
if(file.exists()) {
System.out.println(file.getAbsolutePath());
}
结果是
c:\Program Files\7-Zip\7z.exe
打印在控制台上。
我建议您尝试使用这个习惯用法,即在尝试执行之前检查 .exe 文件是否存在。