我寫了一個需要連接到外部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