繁体   English   中英

如何从 Java 运行 Mac 应用程序?

[英]How to run a Mac application From Java?

我尝试使用下面的代码来运行我从 Apple 脚本创建的独立实用程序应用程序,但是,我收到了“无文件或目录存在”错误。

我在项目、dist、父目录中放置了相同的副本(用于测试),但这没有帮助。

所以,我的问题是:我运行应用程序的调用是否错误(可能是因为它不是 Windows exe)? 如何从 java 运行 mac 应用程序?

谢谢

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
    Runtime r=Runtime.getRuntime();
    Process p=null;
    String s="MyLineInInput.app";
    try {
        p = r.exec(s);
    } catch (IOException ex) {
        Logger.getLogger(AudioSwitcherView.class.getName()).log(Level.SEVERE, null, ex);
    }


}

Mac App Bunde 不是可执行文件,而是具有特殊结构的文件夹。 可以使用open命令打开它,将 App Bundle 路径作为参数传递: open MyLineInInput.app

编辑:更好的是使用Desktop.getDesktop().open(new File("MyLineInInput.app"));

我将Runtime.getRuntime().exec()方法与所选答案中提到的打开命令一起使用。 我没有使用Desktop.getDesktop().open() ,因为它在我的案例中意外地打开了一个终端,我不想创建一个额外的文件 object。

Process process = Runtime.getRuntime().exec("open /System/Applications/Books.app");

添加'/System'的原因:

看来我们需要为系统应用程序使用/System前缀。 对于用户安装的应用程序,这不是必需的,它可以像/Applications/Appium.app


回答我最初也面临的@Pantelis Sopasakis 的问题 -

我收到错误消息:java.lang.IllegalArgumentException:文件:>/Applications/Microsoft Office 2011/Microsoft\ Excel.app 不存在。

在这种情况下,可能仅仅是因为路径中没有 escaping 空格字符。

环境:JDK 11 Zulu - macOS Monterey 12.2.1 - M1 Silicon

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM