2016-04-05 24 views
1

Mac OS makinemde iyi çalışan bir Java uygulaması (JAR) derledim. Derlenmiş bir C-Shared kütüphanesini çağırmak için JNI kullanır ve bu yerel kodu yüklemek için jnr-ffi kullanır.JNI ile ilgili uygulama yüklenemedi Raspberry Pi

Jnr-ffi'den başlatılmaya çalışan bir sürü hata alıyorum. Java yüklemesinin bir parçası olarak sistemde bulunması gereken bazı jni dosyaları olmalı, ancak mevcut değil.

Ben stacktrace kopyalayamazsınız kelimesi kelimesine ama burada yararlı olmalı hatalardan bazıları şunlardır:

Exception in thread "main" j.l.UnsatisfiedLinkError: could not load FFI provider jnr.ffi.provider.jffi.provider 


Another unsatisfied link error below: /tmp/...gibberish..so cannot open shared object file: no such file or directory. 

Another unsatisfied link error: Can't load library: /usr/lib/libjffi-1.2so 

Temelde yerel kod yükleme ilgili hataların bir demet.

O ben çalıştırmak çalışıyorum JAR ayıkladıktan değer bir şey de olduğunu ve böyle arm-Linux, Darwin, i386-Linux olarak klasörlerin bir demet içerir ve libjffi-1.2.so Yani dosyaları gibi görünüyor dosya JAR var ama çalışma zamanında, Jave onları bulmakta zorlanıyor.

Bunu nasıl düzelteceğimi anlayamıyorum ve diğer makinede çalıştı. Nasıl düzeltilir?

sudo ile çalıştırmayı denedim.

cevap

1

JVM'yi çalıştırdığınızda, yerel kitaplığı arar ve yüklemeyi deneyecektir. Ne yazık ki, yerel kütüphaneler derlendiğinde taşınabilir değildir ve bu yüzden çalıştırmaya çalıştığınız yazılım, farklı mimariler için derlenmiş aynı kütüphaneyi sağlar.

Ahududu pi için ihtiyacınız olan tek şey arm-Linux biridir.

Sadece JVM'nin kütüphaneyi yüklemek için kullandığı yolun ne olduğunu ve yazılımın uygun olanı komut satırından yüklemek için yapılandırılmasını veya derlenmiş olanı kullanarak macda kullandığınızı değiştirmeyi öğrenmeniz yeterli. ARM için.

+0

Teşekkürler, bunu deneyeceğim. Ancak,/tmp dizini ile rasgele bir dosya adı ile arama yapılıyor? – conor

+0

Kural dışı durumdaki arama yollarından biri geçerli bir yoldur .. Neden bu? – conor

+0

Java, geçici klasör kavramına sahiptir. Java kaynak kodunda, programcı kütüphaneyi bunun üzerine çözmeye çalışıyor olabilir. Kütüphaneyi içeren bazı arşivleri tmp klasöründe açmaya çalışabilir, ancak arşiv mevcut olmadığından ayıklanan dosya mevcut olmaz. (sadece burada hitap ediyor) – snovelli

İlgili konular