2013-01-13 65 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位模式下打開」。就這樣 !!!

相關問題