【发布时间】:2009-10-06 18:04:47
【问题描述】:
看起来无论位置如何,我都无法在 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();
}
}
}
如果我使用参数c:\tmp\zz1.txt c:\tmp\zz.xml c:\tmp\ss.pdf 运行 DesktopOpenBug(我碰巧有 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”,它打开就好了。
编辑:如果这是Sun Java bug #6764271 的示例,请投票给它以提供帮助。多么痛苦。 >:(
【问题讨论】:
-
你应该真正编辑你原来的问题,而不是创建一个新问题。
-
有足够的编辑,我决定投票关闭我原来的问题+打开一个新问题。这个与 UNC 路径无关,我得到的唯一答案与 UNC 路径和空格有关。
-
事实上,更好的是:我已经删除了旧问题,因为它在这一点上没有任何价值。