可能重複:
Java : switching between dll depends on system architecture (32/64)加載32位或64位JNI庫中的Java
在我的Java應用程序,我需要一個JNI庫,可用於32位和64位。我不想發佈兩個不同版本的應用程序,所以我想用兩個庫發佈應用程序,應用程序必須確定自己要加載哪個庫(foobar32.so或foobar64.so)。我怎麼做?
我想加載第一個,如果這會拋出一個異常,然後我加載第二個,但這聽起來很難看。
是否有一些系統屬性,我可以檢查,而不是確定是否使用32位Java或64位Java來運行我的應用程序?我知道有一些os.arch
屬性,但根據this answer,返回值似乎非常不可預測。
那麼讓應用程序決定是否加載32位或64位JNI庫的最佳方式是什麼?
您是如何捆綁應用程序的?在OSGi中,您只能根據操作系統體系結構加載某些軟件包或打包碎片。這是如何交付平臺特定功能的。你可以考慮使用OSGi嗎? – katsharp 2011-03-27 12:04:18
您的主要關注點不是操作系統是什麼,而是可執行文件是什麼:您可以在64位操作系統上運行32位可執行文件,但它仍然是32位,而您需要的庫是32位而不是64.如果假設您可以在某個32位上運行64位可執行文件操作系統,你需要64位庫。這是przemelek試圖解釋的。 「os.arch」對於任何事物來說都是足夠好的,只要它存在,我的回答就是針對不安全的情況,但某些系統屬性可能不存在。 – bestsss 2011-03-27 14:12:47