我需要从我的java应用程序中执行一个外部程序。 我正在 mac 上编程,并且有一个.app应用程序,我想在用户选择它时运行它。 它使用以下命令在窗口上成功运行:
String cmd = "path_to_executableprogram.exe"";
Process p = Runtime.getRuntime().exec(cmd);
...
但这不适用于.app文件。 我已经打开了.app文件的内容,并找到了一个Unix可执行文件以及该应用程序的其他支持文件。 unix 可执行文件等同于.exe文件吗?
在 OS X 上从 Java 启动 Mac 应用程序只需调用内置的 open
命令,并将应用程序作为参数即可。 OS X 中的打开命令行工具知道如何正确打开许多不同的文件类型,包括应用程序捆绑包。 如果尝试启动 TextEdit.app 应用程序,则需要调用:
open /Applications/TextEdit.app
在 Java 中,您将使用:
String cmd = "open /Application/TextEdit.app";
Process p = Runtime.getRuntime().exec(cmd);
是的,您应该运行的可执行文件是位于.app捆绑包中的 unix 可执行文件。不过,它可能无法正常工作,您可能需要 cd 到目录或其他内容中。
大多数应用程序二进制文件位于内容/MacOS/应用程序名称中。您可以创建一个方法,该方法将接收字符串名称并根据标准目录执行该二进制文件。
.app文件实际上只是一个文件夹。这是一种在 Mac 上自包含应用程序的方法。实际的二进制文件很可能是你找到的Unix可执行文件。了解有关该应用程序的一些详细信息会有所帮助。
.app的二进制文件位于 Application.app/Contents/MacOS