2013-01-13 35 views
0

我写了一个需要连接到外部32位库的java应用程序。在mac上运行带条件参数的java应用程序

在我的iMac(英特尔)上,我需要使用-d32选项启动jar文件。

在我的Powerbook G4上,它必须在没有-d32选项的情况下启动。

我想创建一个在两个mac上运行的jar文件包。 所以有一些条件可以测试以决定是否使用-d32选项

我该怎么做?

+0

只需创建两个捆绑包,它只是一个不同的'plist'条目 - 可能会自动执行此操作。期望一个应用程序能够兼容不同的系统,这是不合理的。 – millimoose

回答

0

结账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; 
} 
+0

我不认为OP想分割逻辑,如果他需要一个32位的本地库,他的程序将无法在amd64下工作。 – millimoose

+1

我不确定这会帮助(直接)。 JVM已经被创建,但是这个“可以”被使用,然而,用正确的命令行参数启动另一个JVM - 但我不确定命令行参数用于什么,所以我可能是错误的 – MadProgrammer

+0

@millimoose我把这篇文章看作是“如何确定我正在执行的架构?”这将做到这一点。我使用amd64作为我的拱门,这取决于他运行的是哪台机器,它会返回当前正在执行的任何拱门。它在黑暗中刺中 - 我从来没有编写过跨架构,所以我不知道这是否会最终满足OPS的需求。 MadProgrammers评论启动另一个JVM可能工作虽然 –

1

我终于找到了答案,我的问题: 首先,“-d32”选项不考虑当应用程序被打开通过双击它。因此在运行jvm之前不再需要测试架构。

实际上,它非常简单:在Intel Mac上,一旦创建应用程序,打开应用程序的属性,并选择“在32位模式下打开”。就这样 !!!

相关问题