2014-08-28 21 views
5

Yerel bir DLL'nin iki sürümünü (64 bit ve 32 bit) java.library.path dosyasına yerleştirmek mümkün müdür?Yerel kütüphanenin 32bit ve 64bit sürümlerini java.library.path dosyasına yerleştirebilir miyim?

Yerel kitaplık yolunda 64 bit ve 32 bit sürümleri yerleştirip yerleştirmediğimde, farklı bir mimari için çalıştırılmakta olan tatminsiz bir bağlantı istisnası olurdu. Eğer öyleyse, tercih edilen çözüm nedir? doğru kütüphaneyi bağlayan grad/maven derleme komutumda bir bayrak var mı? Şu anda aşağıdaki yapıyorum

: -

-Djava.library.path=/out/lib/win64jdk;/out/lib/winx86jdk 

mimarisi için ilgili dll içeren Hem. Şu anda JVM'nin sembolleri belirleyip belirleyemediğinden emin değilim.

cevap

2

Ben sadece uygun yerli dll dağıtılabilir paket içinde olmasını sağlamak istiyorum ve diğerini bırak.

Bununla birlikte, her ikisini de dağıtmak istiyorsanız, doğru kitaplığı yüklemek için Java kodu yazmanız gerekir. Yerel kitaplığı yüklemek için System.loadLibrary kullanılır ve yapmanız gereken normal bir şey, bunu Java kodunuzda statik bir başlatıcıda aramaktır.

Eğer istisnalarla ilgili kabaca güvenmek istekli olmadıkça, bu kodu kullanabilirsiniz:

System.getProperty("sun.arch.data.model") 

uygun yerel kütüphane yüklemek için. Bu işlev, buna göre 32 veya 64 döndürecektir.

+0

Şu anda java kodunu değiştiremiyorum ama yapı betiğini sıralama aşamasındayım, bu yüzden derlemenin 64bit/32bit için olup olmadığını belirlemek için kod kullanacağım. kütüphane. – chrisw

1

Bunlardan hiçbirini eklemeden önce, sonra gereksinim duymadan önce (örneğin, uygulama başladığında sağda), geçerli sistem mimarisine göre uygun olanı yükleyebilirsiniz.

Sen System.loadLibrary() ile yükleyebilirsiniz:

boolean is64bit = ...; // See below how to detect 
System.loadLibrary("/out/lib/win" + (is64bit ? "64jdk" : "x86jdk")); 

mimarisini algılama: Yerinde olsaydım

How can I tell if I'm running in 64-bit JVM or 32-bit JVM (from within a program)?

+0

Şu anda java kodunu değiştiremiyorum, ancak derleme kodunu sıralamak için kullanıyorum, böylece kodun yüklenmesi için değişiklikler yapana kadar yapının 64bit/32bit olup olmadığını belirlemek için Gradle kullanacağım doğru kütüphane. – chrisw

İlgili konular