我正在使用Runtime.getRuntime.exec()方法来调用exe。我用这种方法面临的问题是当我传递一些exe路径(c:\ JPN_char_folder \ mypath \ myexe.exe)和其他语言字符(ex.Japanese)时“它说”系统找不到指定的文件“。你能提出一些想法来解决这个问题吗?我甚至尝试在转换为UTF-8后尝试传递这个exe路径,但我仍然无法解决这个问题。
- 罗伯特。
答案 0 :(得分:0)
我不认为日文字符是问题;这是c:驱动器。
你需要这样写:
String path = "c:\\\JPN_char_folder\\mypath\\myexe.exe";
看看是否有帮助。
答案 1 :(得分:0)
很可能你某处有编码问题。
此处有几个步骤:路径值:
沿着这个序列,路径出了问题: - (。
很难分辨到哪里;你最好的选择可能是尝试在路径的每一步打印出值,看看它出错的地方。
至少从Java内部,您应该将字符串打印为文本,并打印出Unicode代码点列表(使用String.codePointAt
)。这样你就可以看到Java使用的真实数据。
另一种方法:
现在你可以比较两个结果;这应该会让你知道路径搞砸了。 注意:
路径是否包含Basic Multilingual Plane(BMP)之外的字符? Java处理这些有点笨拙,所以你需要特别注意。也许你可以先检查一下。
答案 2 :(得分:0)
即使您使用的是Windows,也可以在指定目录时使用斜杠。这将帮助你逃避反斜杠地狱。
例如,在我的系统上,7z
位于目录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文件是否退出。