java.awt.Desktop.open不’;不能使用PDF文件吗?

java.awt.Desktop.open不’;不能使用PDF文件吗?,java,desktop,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 {

看起来我无法在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
(我碰巧有3个文件)运行DesktopOpenBug,我会得到以下结果:(.txt和.xml文件打开得很好)

到底发生了什么事?我正在运行WinXP,我可以在命令提示符下键入“c:\tmp\ss.pdf”,它会很好地打开

编辑:如果这是一个示例,请投票支持。多痛苦啊(

如果切换片段的顺序,是否会导致其他某个文件出现相同的错误。我想知道在调用文件构造函数之前是否需要修剪路径的末尾


嗯……是的,忽略这个……检查。
open
抛出IO异常“如果指定的文件没有关联的应用程序,或者关联的应用程序无法启动”……也可以从页面顶部…“注册、访问和启动关联的应用程序的机制取决于平台。”


桌面类的代码:

open方法调用
DesktopPeer.open

Desktopper源:

DesktopPeer是特定于实现的

以下是特定于Windows的实现的源代码:

open->ShellExecute->(本机)ShellExecute

Native
ShellExecute
是Win32
ShellExecute
的包装器。以下是有关该函数的信息。


我的建议是自己编写ShellExecute函数的实现。这是一个源代码,来自某个执行该函数的人。

直到最近通过这篇文章,我才知道这个桌面命令:

以前我一直在使用:

Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL "+ myfile); 

这对我来说一直很有效。如果你的方法不起作用,也许你可以考虑试试这个命令。

你真的应该编辑你的原始问题,而不是创建一个新的问题。编辑的内容足够多,我决定投票关闭我的原始问题并打开一个新的问题。这个问题与UNC路径无关,并且是唯一的问题nswer我必须处理UNC路径和空间。事实上,更好的是:我删除了旧问题,因为它在这一点上没有任何价值。嗯…是的,忽略它…检查此链接…open会引发IO异常“如果指定的文件没有关联的应用程序或关联的应用程序无法启动”…也从页面顶部。。。“注册、访问和启动关联应用程序的机制取决于平台。”PDF文件在我的计算机上有关联的应用程序,我不知道如何调试正在发生的事情。它所说的只是“参数不正确”,听起来像是Microsoft COM/ActiveX错误。它有帮助,但仅在Windows上。(我同时使用MacOS和Windows。)
Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL "+ myfile);