我有一个我想恢复的旧applet。所有功能都适用于Windows XP。但是,在Windows 7中,无法在其本机应用程序中打开文件(下面的代码部分)。什么都没发生,没有错误或类似的东西。我正在使用 Java版本1.5.0(J2SE 5.0),因此 Desktop.getDesktop(); 将无效!
public void start(String sFileName, String sDir, ctgraphics gGfx) {
String command = '"' + sDir + sFileName + '"';
Runtime myRuntime = Runtime.getRuntime();
try {
myRuntime.exec("rundll32 SHELL32.DLL,ShellExec_RunDLL " + command);
gGfx.setStatusText("File opened.");
gGfx.drawStatusBar(1);
} catch (IOException e) {
System.out.println("Error " + e.getMessage());
}
}
为什么上述代码在Windows 7中不起作用,而我需要做什么才能在其本机应用程序中打开文件(考虑到我使用的是Java v.1.5)?
干杯。
答案 0 :(得分:2)
阅读When Runtime.exec() won't。它描述了许多常见的pittfals。
答案 1 :(得分:1)
您可能需要使用桌面支持,请查看以下链接:
您只需使用要打开的文件的路径创建File
,然后拨打Desktop.getDesktop().open(file)
。
在1.5桌面是一个库然后它进入标准JDK之前,你可以考虑使用这个选项。
在这里你可以找到一个教程:
javadesktop tutorial for java one 2004
希望这有帮助
这是项目网站:
在这里你可以找到罐子:
答案 2 :(得分:1)
RunTime.exec()
的单行调用很少有效。请务必阅读并实施When Runtime.exec() won't。ProcessBuilder
,提供redirectErrorStream()
等方法。反过来,这种方法可以更容易地实现第1点的一些建议。