SORU
10 EYLÜL 2009, PERŞEMBE


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 ve Servlet kurucu System.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
10 EYLÜL 2009, PERŞEMBE


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() {
    }

}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ArkticPlanet

    ArkticPlanet

    9 ŞUBAT 2010
  • Machinima

    Machinima

    17 Ocak 2006
  • Nick Pitera

    Nick Pitera

    8 NİSAN 2006