3

我需要从我的 java 应用程序中执行一个外部程序。我在 Mac 上编程并且有一个 .app 应用程序我想在用户选择它时运行。它使用以下命令在 Windows 上成功运行:

String cmd = "path_to_executable\program.exe\"";

Process p = Runtime.getRuntime().exec(cmd); ...

但这不适用于 .app 文件。我打开了 .app 文件的内容,并找到了一个 Unix 可执行文件以及该应用程序的其他支持文件。unix 可执行文件是否等同于 .exe 文件?

4

3 回答 3

7

open在 OS X 上从 Java 启动 Mac 应用程序只需使用 Application 作为参数调用内置命令。OS X 中的 open 命令行工具知道如何正确打开许多不同的文件类型,包括应用程序包。如果您尝试启动 TextEdit.app 应用程序,您将调用:

open /Applications/TextEdit.app

在 Java 中,您将使用:

String cmd = "open /Application/TextEdit.app";
Process p = Runtime.getRuntime().exec(cmd);
于 2012-11-13T23:43:44.937 回答
1

是的,您应该运行的可执行文件是位于 .app 包中的 unix 可执行文件。但它可能无法正常工作,您可能需要 cd 进入目录或其他东西。

大多数应用程序二进制文件位于 Contents/MacOS/App Name 中。您可以创建一个接收字符串名称并基于标准目录执行该二进制文件的方法。

于 2012-11-13T23:04:22.383 回答
0

.app 文件实际上只是一个文件夹。这是一种在 Mac 上自包含应用程序的方法。实际的二进制文件很可能是您找到的 Unix 可执行文件。这将有助于了解有关该应用程序的一些详细信息。

.app 的二进制文件位于 Application.app/Contents/MacOS

于 2012-11-13T23:19:19.930 回答