Używam Opencv 2.4.5 z Javą przez pewien czas budując aplikację i chciałbym teraz rozpowszechnić aplikację. Bibliotekę ładuje się, używając:Jak pakietować opencv + java w słoiku
static{
System.loadLibrary("opencv_java245");
}
co działa dobrze. Jednak podczas eksportowania, to nie działa, gdy uruchomiony ze słoika:
java -jar build1.jar
Plik opencv_java245.jar jest włączone jako biblioteki użytkownika, z native pliku (libopencv_java245.dylib) podłączonego do niego. Podczas uruchamiania pliku wykonywalnego jar wygenerowanego z Eclipse, otrzymuję poniżej UnsatisfiedLinkError, pomimo rzeczy kompilujących/działających dobrze w czasie zaćmienia.
Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java245 in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
at java.lang.Runtime.loadLibrary0(Runtime.java:845)
at java.lang.System.loadLibrary(System.java:1084)
at com.drawbridge.Main.<clinit>(Main.java:12)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:266)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:56)
Ktoś zna prosty sposób pakowania OpenCV w słoik?
Aktualizacja: wyczerpałem już wszystko. Mogę dodać bibliotekę do mojej ścieżki budowania (i nie używać System.loadLibrary), która działa w środowisku Eclipse, ale nie w pakiecie w słoiku. Próbowałem wszystkiego. Sprawdziłem również typ biblioteki dynamicznej, którą próbuję wczytać - to jest to, że wygląda na to, że powinna działać poprawnie. Użyłem -D64 i -D32 do przetestowania i uzyskania tego samego wyniku z obydwoma.
możliwe duplikat [Extract i załadować DLL z JAR] (http://stackoverflow.com/questions/4764347/extract -and-load-dll-from-jar) –
Nie można wczytać natywnej biblioteki (lub biblioteki DLL) bezpośrednio z pliku JAR. Zobacz powiązane pytanie, jak sobie z tym poradzić. –
Dzięki @StephenC Próbowałem tej metody i nadal uzyskać UnsatisfiedLinkError, ale z inną wiadomość (coś podobnego do nieznanego typu). – alistair