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

2023-12-12

看起来我无法在 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(使用前将#替换为@)

java.awt.Desktop.open 不适用于 PDF 文件? 的相关文章

随机推荐

  • MySQL ORDER BY RAND() 函数何时排序?

    我读过有关 ORDER BY RAND 及其性能问题的内容 这些是否仅适用于返回大型数据集的查询 例如 如果我有一个包含 100 000 行的表 并使用 WHERE 子句返回包含 10 条记录的数据集 然后使用 ORDER BY RAND
  • 使用命名范围填充列表框

    我正在开发我的第一个 VBA 项目 需要一些绝对的新手指导 我有一份提交表格 员工将用它来提交他们的每日 KPI 我在用户表单中有一个名为 lstName 的列表框控件 员工在提交表单之前将使用该控件来选择自己的姓名 员工姓名存储在 She
  • 在 Windows XP 上安装 wxPython 后“导入 wx”失败

    我下载并安装了这个版本wxPython与我的 Python 2 6 安装一起使用 http downloads sourceforge net wxpython wxPython2 8 win32 unicode 2 8 9 1 py26
  • 单击并拖动 Selenium(chrome webdriver)不是拖动,而是单击并按住

    因此 我尝试自动化一个可以单击的列表元素 并将其拖动到 ol 元素的不同部分 然后保存 但测试只会持续到保持该元素为止 它不会移动偏移量 也不会移动到目标元素 Chrome 网络驱动程序 Java Selenium public void
  • 是否可以将 Azure VM 从托管磁盘转换为非托管磁盘? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 这个问题似乎不是关于主要由程序员使用的特定编程问题 软件算法或软件工具 如果您认为该问题与主题相关另一个 Stack Exchange 站点 您可以发表评论来解释问题可以在哪里得到解
  • 关联 php 数组中的下一个元素

    这看起来很容易 但我不明白 users emails array Spence gt email protected Matt gt email protected Marc gt email protected Adam gt email
  • 在jasper报告中命名excel中动态生成的工作表名称

    我有一个要求 我需要生成 Excel 格式的报告 Excel工作表的工作表将动态生成 我想知道是否有一种方法可以命名这些动态生成的工作表 使用 net sf jasperreports export xls sheet names ator
  • 同一台计算机上的两个 Chrome 会话 - 一个将连接到我们的 Azure 网站,另一个“无法连接到 SQL Server 数据库”

    我们遇到一个 Azure 网站的问题 该网站间歇性失败并出现以下错误 SqlException 0x80131904 建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误 服务器未找到或无法访问 验证实例名称是否正确以及
  • PHP中使用IMAP()获取最近未读邮件数

    我正在努力得到不 来自 gmail 帐户的最近未读邮件 为此 我在 Ubuntu 系统中安装了 IMAP 并尝试了一些 PHP iMAP 功能 这是我到目前为止所尝试过的 connect to gmail hostname imap gma
  • C# 删除空url参数正则表达式

    我正在尝试使用 C 从字符串中删除空 url 类型参数 我的代码示例在这里 public static string test string parameters one aa two three aaa four string patte
  • 如何获取带有波纹可绘制的按钮的颜色

    我有各种按钮 我想获取它们的背景颜色 在颜色可绘制中获取背景颜色很容易 但在波纹可绘制中并不容易 我如何设法从波纹可绘制中获取背景颜色 尝试这个 RippleDrawable rippleDrawable RippleDrawable bu
  • 不裁剪项目的虚拟化面板

    因此 如果项目在滚动区域的末尾被剪切 裁剪 那么拥有无镶边的集合看起来真的很愚蠢 我想为集合 ItemsControl ListBox 创建一个虚拟化面板 它只绘制整个项目 而不是项目的各个部分 例如 我不希望显示第三个部分容器 除非有空间
  • Pygame 不返回操纵杆轴移动而不显示

    我见过这个问题的其他解决方案说你要么需要调用 pygame event pump 要么在 while 循环之外初始化操纵杆 然而 即使使用这些解决方案 我得到的操纵杆轴值仍为 0 如果我只取消注释pygame display set mod
  • 类、对象和实例之间的区别

    Java中的类 对象和实例是什么 A class是您用来创建的蓝图objects 一个对象是一个instance类的 它是您使用特定类创建的具体 事物 因此 对象 和 实例 是同一件事 但 实例 一词表示对象与其类的关系 如果你看一个例子就
  • 省略 mtable/outreg 类型表中的一些系数

    我一直在运行一堆不同的回归模型 现在想将它们的估计值放入 LaTeX 表中 为了使不同的规格具有可比性 我想使用那种表格outreg来自rockchalk包或mtable from memisc产生 即其中不同的模型显示在列中 并且这些模型
  • 将 UITextField 格式化为货币

    我的应用程序上有一个 UITextField 它仅接收来自用户的数字输入 此数字输入代表货币 默认值为 0 00 我想创建类似掩码的东西 以便在用户输入数字时格式化 UITextField 例如 9 变成 0 09 美元 99 变成 0 9
  • RemoteViews 的 AppWidget 刷新 Uri

    我创建了一个 Appwidget 它显示一个图像文件 test png 该文件通过 Uri 提供给它的 RemoteViews 在 onUpdate 中 我运行一个更改文件内容的服务 我还为将调用 onUpdate 的图像设置了一个 onC
  • 为什么C语言中两个浮点数相加是错误的?

    我在两个浮点数相加时遇到问题 代码如下 float a 30000 0f float b 4499722832 0f printf f n a b 为什么输出结果是450002816 000000 正确的应该是 450002832 浮点数在
  • 如何在 R 中创建缺失值的曲面图?

    我有一个 5x5 矩阵示例 其中包含以下值 dat lt matrix seq 1 13 0 5 nrow 5 byrow TRUE dat seq 2 25 2 lt NA 1 NA 2 NA 3 NA 4 NA 5 NA 6 NA 7
  • java.awt.Desktop.open 不适用于 PDF 文件?

    看起来我无法在 PDF 文件上使用 Desktop open 无论位置如何 这是一个小测试程序 package com example bugs import java awt Desktop import java io File imp