java.awt.Desktop.open不能用于PDF文件?

Jas*_*n S 4 java desktop

看起来我不能在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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我使用参数运行DesktopOpenBug c:\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)
Run Code Online (Sandbox Code Playgroud)

到底他妈发生了什么?我正在运行WinXP,我可以在命令提示符下键入"c:\ tmp\ss.pdf",它打开就好了.

编辑:如果这是Sun Java bug#6764271的一个例子,请通过投票帮助它.太痛苦了.> :(

Dav*_*vid 8

我从来不知道这个桌面命令,直到最近通过这篇文章:
Java的Runtime.getRuntime().exec()会在Windows 7上运行吗?

以前我一直在使用:

Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL "+ myfile); 
Run Code Online (Sandbox Code Playgroud)

它一直对我有用.如果您的方法不起作用,可能您可以考虑尝试此命令.