[英]How to run application with parameters from within java application on mac osx
[英]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
前缀。 对于用户安装的应用程序,这不是必需的,它可以像/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.