java.lang.UnsatisfiedLinkError*****hayır.dll java.kütüphane.yol
Nasıl yüklemek özel bir dll DOSYASı web uygulamam dosya alabilir miyim? Başarısız ama kendi yollarını takip etmeye çalıştım.
- kopyalanan
system32
klasör içinde DLL gerekli veServlet
kurucuSystem.loadLibrary
bunlardan birini doldurmaya çalıştı - Kopyalanan
tomcat_home/shared/lib
tomcat_home/common/lib
DLL gerekli - tüm bu DLL web-uygulama
WEB-INF/lib
CEVAP
System.loadLibrary()
çalışması, kütüphane (Windows, DLL) bir dizini yere senin üzerinde PATH
olması gerekiryabir yolu java.library.path
sistemin listelenen emlak java -Djava.library.path=/path/to/dir
Java başlatabilirsiniz).
Ayrıca, loadLibrary()
için kütüphaneye temel adı, sonunda .dll
olmadan belirtin. Yani, /path/to/something.dll
, System.loadLibrary("something")
kullanırsınız.
Siz de alıyorsanız UnsatisfiedLinkError
tam bakmak gerekir. Eğer öyle diyorsa bir şey gibi:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no foo in java.library.path
o zaman bulamıyordufoosizin kütüphane (foo.dll) PATH
java.library.path
. Eğer öyle diyorsa bir şey gibi:
Exception in thread "main" java.lang.UnsatisfiedLinkError: com.example.program.ClassName.foo()V
sonra bir şey Java gerçek yerli muadili uygulamanız yerel bir Java fonksiyonu göster mümkün değil o anlamda kütüphanenin kendisi yanlış.
Başlangıç için, System.loadLibrary()
karar senin etrafında bazı günlük eğer düzgün çalıştırırsa görmek koyardım. Bir özel durum atar ya aslında yürütülen kod bir yolda değilse, o zaman her zaman UnsatisfiedLinkError
ikinci tip yukarıda açıklandığı alacak.
Bir not olarak, çoğu insan doğal yöntemlerle sınıfta statik başlatıcı bir blok içine loadLibrary()
çağrılarını, her zaman tam olarak bir kez idam olduğundan emin olmak için
class Foo {
static {
System.loadLibrary('foo');
}
public Foo() {
}
}
Android java Mall of Sofia.lang.Unsati...
İle " uğraşan;java.lang.OutOfMemor...
Hata java.lang.OutOfMemoryError: GC ov...
Güneş tutulması - (TOTEM) hayır Java /...
Nasıl başa "java.lang.OutOfMemory...