我写了一个需要连接到外部32位库的java应用程序。在mac上运行带条件参数的java应用程序
在我的iMac(英特尔)上,我需要使用-d32选项启动jar文件。
在我的Powerbook G4上,它必须在没有-d32选项的情况下启动。
我想创建一个在两个mac上运行的jar文件包。 所以有一些条件可以测试以决定是否使用-d32选项
我该怎么做?
我写了一个需要连接到外部32位库的java应用程序。在mac上运行带条件参数的java应用程序
在我的iMac(英特尔)上,我需要使用-d32选项启动jar文件。
在我的Powerbook G4上,它必须在没有-d32选项的情况下启动。
我想创建一个在两个mac上运行的jar文件包。 所以有一些条件可以测试以决定是否使用-d32选项
我该怎么做?
结账System.getProperties()。具体为os.arch
。您可以获得支持的密钥列表here。
String arch = System.getProperty("os.arch");
System.out.println(arch);
在我的系统上,这将输出'amd64'。一旦你了解了拱门,你就可以分裂你的逻辑。 如果您使用Java 7,那么我会打开字符串:
String arch = System.getProperty("os.arch");
System.out.println(arch);
switch(arch){
case "amd64":
//do logic
break;
default:
//do default logic
break;
}
我不认为OP想分割逻辑,如果他需要一个32位的本地库,他的程序将无法在amd64下工作。 – millimoose
我不确定这会帮助(直接)。 JVM已经被创建,但是这个“可以”被使用,然而,用正确的命令行参数启动另一个JVM - 但我不确定命令行参数用于什么,所以我可能是错误的 – MadProgrammer
@millimoose我把这篇文章看作是“如何确定我正在执行的架构?”这将做到这一点。我使用amd64作为我的拱门,这取决于他运行的是哪台机器,它会返回当前正在执行的任何拱门。它在黑暗中刺中 - 我从来没有编写过跨架构,所以我不知道这是否会最终满足OPS的需求。 MadProgrammers评论启动另一个JVM可能工作虽然 –
我终于找到了答案,我的问题: 首先,“-d32”选项不考虑当应用程序被打开通过双击它。因此在运行jvm之前不再需要测试架构。
实际上,它非常简单:在Intel Mac上,一旦创建应用程序,打开应用程序的属性,并选择“在32位模式下打开”。就这样 !!!
只需创建两个捆绑包,它只是一个不同的'plist'条目 - 可能会自动执行此操作。期望一个应用程序能够兼容不同的系统,这是不合理的。 – millimoose