【问题标题】:How to open file in Microsoft Word on Mac OS X from within Java?如何从 Java 中在 Mac OS X 上的 Microsoft Word 中打开文件?
【发布时间】:2014-08-06 15:14:36
【问题描述】:

我正在尝试在 Mac OS X 上以编程方式从 Java 中打开 *.docx 文件。对于 Windows 和 Linux,我已经使用以下方法使其工作:

Windows:

Runtime.getRuntime().exec(new String[] {"C:\Program Files\Microsoft Office\Office15\WINWORD.EXE", "document.docx"});

Linux:

Runtime.getRuntime().exec(new String[] {"/bin/sh", "-c", "/usr/bin/libreoffice", "document.docx"});

它如何与 Mac OS X 一起工作?我的 Microsoft Office 安装在以下位置:

/Applications/Microsoft Office 2011/Microsoft Word.app

任何想法都非常感谢 - 谢谢。

【问题讨论】:

  • 如果我有 OpenOffice 或 StarOffice 而不是 LibreOffice,该怎么办?如果我将我的安装在 /usr/local/bin/ 或 /opt/local/bin 中怎么办?在 Windows 上,位置“C:\Program Files\”实际上是可配置的,并由环境变量表示。也许一家公司在 SAN 上设置了 S:\SharedPrograms。这些假设几乎总是被做出并且几乎总是正确的,但对于某些受众/市场来说完全失败了。
  • 嗨斯蒂芬-感谢您的评论。为了定义核心问题,我故意高度简化了我上面的示例。我的应用程序中的程序路径完全是用户可配置的。此外,用户可以将任意外部程序与任何数据类型链接,然后我的应用程序将数据类型与相应的程序映射以打开文件。

标签: java linux macos runtime.exec


【解决方案1】:

您可以使用Java Desktop API在所有三个操作系统中打开它:

File myFile = new File("/path/to/mydoc.docx");
Desktop.getDesktop().open(myFile);

【讨论】:

  • 您可能需要在调用Desktop.getDesktop() 之前检查Desktop.isDesktopSupported()GraphicsEnvironment.isHeadless(),或者准备好捕获getDesktop 可能抛出的UnsupportedOperationException 和HeadlessException。
  • 是的,这正是我目前实施的策略。首先尝试使用 Desktop.open() 打开文件 - 如果失败,用户可以将特定数据类型与任何程序链接(即使用 Runtime.exec() 打开)。
【解决方案2】:

有一个名为 open (/usr/bin/open) 的程序,它接受 -a 的应用程序,以及传递的文件,因此您可以执行以下操作:

Runtime.getRuntime().exec(new String[] {"open", "-a", "Microsoft Word", "document.docx"});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-19
    • 1970-01-01
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-11
    相关资源
    最近更新 更多