看起来我无法在 PDF 文件上使用 Desktop.open(),无论位置如何。这是一个小测试程序:
package com.example.bugs;
import java.awt.Desktop;
import java.io.File;
import java.io.IOException;
public class DesktopOpenBug {
static public void main(String[] args)
{
try {
Desktop desktop = null;
// Before more Desktop API is used, first check
// whether the API is supported by this particular
// virtual machine (VM) on this particular host.
if (Desktop.isDesktopSupported()) {
desktop = Desktop.getDesktop();
for (String path : args)
{
File file = new File(path);
System.out.println("Opening "+file);
desktop.open(file);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
如果我使用参数运行 DesktopOpenBugc:\tmp\zz1.txt c:\tmp\zz.xml c:\tmp\ss.pdf
(我碰巧有 3 个文件)我得到这个结果:(.txt 和 .xml 文件打开正常)
Opening c:\tmp\zz1.txt
Opening c:\tmp\zz.xml
Opening c:\tmp\ss.pdf
java.io.IOException: Failed to open file:/c:/tmp/ss.pdf. Error message:
The parameter is incorrect.
at sun.awt.windows.WDesktopPeer.ShellExecute(Unknown Source)
at sun.awt.windows.WDesktopPeer.open(Unknown Source)
at java.awt.Desktop.open(Unknown Source)
at com.example.bugs.DesktopOpenBug.main(DesktopOpenBug.java:21)
到底他妈发生了什么?我运行的是 WinXP,我可以在命令提示符下输入“c:\tmp\ss.pdf”,它就可以正常打开。
edit:如果这是一个例子Sun Java 错误 #6764271请通过投票来帮助它。多么痛苦啊。 >:(
我从来不知道这个桌面命令,直到最近通过这篇文章:
Java的Runtime.getRuntime().exec()可以在Windows 7上运行吗?
以前我一直在使用:
Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL "+ myfile);
它一直对我有用。如果你的方法不起作用,也许你可以考虑尝试这个命令。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)