看起來我不能在PDF文件上使用Desktop.open(),無論位置如何。這裏有一個小的測試程序:java.awt.Desktop.open不適用於PDF文件?
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的例子,請投票支持它。多麼痛苦。 > :(
你應該真的編輯你的原始問題,而不是創建一個新的問題。 – 2009-10-06 18:10:09
將有足夠的編輯,我決定投票結束我原來的問題+打開一個新的。這與UNC路徑無關,唯一的答案就是UNC路徑和空間。 – 2009-10-06 18:38:52
事實上,甚至更好:我已經刪除了舊問題,因爲它在這一點上沒有任何價值。 – 2009-10-06 18:39:46