2016-02-04 2 views
0

Я делаю свои первые попытки использовать libpd с java. IDE, которую я использую, - NetBeans. Для libpd я использую these binary builds for Java. При запуске кода я получаю java.lang.UnsatisfiedLinkError. В какой-то поистине он говорит:libpd on java UnsatisfiedLinkError

Can't find dependent libraries

Я видел аналогичный вопрос для Android, но не для Java.

EDIT: это полные сообщения об ошибке:

Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Users\jaiserpe\AppData\Local\Temp\pdnative7141399841793639340.dll: Can't find dependent libraries at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1938) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1821) at java.lang.Runtime.load0(Runtime.java:809) at java.lang.System.load(System.java:1086) at org.puredata.core.NativeLoader.loadLibraryFromJar(NativeLoader.java:121) at org.puredata.core.NativeLoader.loadLibrary(NativeLoader.java:97) at org.puredata.core.PdBase.(PdBase.java:59) at holamundo.HolaMundo.main(HolaMundo.java:26) C:\Users\jaiserpe\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1 BUILD FAILED (total time: 0 seconds)

+0

Может случиться так, что библиотеки DLL mingw отсутствуют. Эти библиотеки очень старые. Возможно, вам лучше скомпилировать их снова. – Wivlaro

ответ

1

кажется, что вам не хватает зависимые библиотеки libpd.

Вы можете использовать DepndencyWalker для проверки того, чего не хватает.

Если вы считаете, что все необходимые библиотеки есть, убедитесь, что они видны JVM для загрузки. Подробнее о загрузке DLL на Windows here.

+0

В книге о libpd говорится: «Полное отсутствие зависимостей означает, что вы можете построить libpd, как только у вас будет компилятор C». Но, как только оно построено, кажется, что во время выполнения есть зависимости ... – jaiserpe

+0

Кажется, что JVM не может загружать зависимости, основываясь на вашей ошибке, независимо от того, что говорит книга. Вы пробовали дегустацию педераста, прежде чем комментировать это? Он более надежный, чем книга. – rkosegi

+0

Использование DependencyWalker Я проанализировал DLL, которая появляется в ошибке, которая является dll, которая создается в папке Temp каждый раз, когда я запускаю свою программу Java. В анализе говорится: «Ошибка: по крайней мере одна требуемая неявная или перенаправленная зависимость не найдена». – jaiserpe

1

Эти DLL-элементы были построены с использованием MinGW. Используя технику здесь http://comments.gmane.org/gmane.comp.gnu.mingw.user/38834 необходимые библиотеки DLL для тех, строишь не являются:

$ x86_64-w64-mingw32-objdump --all-headers java-build/org/puredata/core/natives/windows/x86_64/pthreadGC2.dll | grep 'DLL Name' 
    DLL Name: KERNEL32.dll 
    DLL Name: msvcrt.dll 
    DLL Name: WS2_32.dll 
$ x86_64-w64-mingw32-objdump --all-headers java-build/org/puredata/core/natives/windows/x86_64/pdnative.dll | grep 'DLL Name' 
    DLL Name: ADVAPI32.dll 
    DLL Name: KERNEL32.dll 
    DLL Name: msvcrt.dll 
    DLL Name: msvcrt.dll 
    DLL Name: pthreadGC2.dll 
    DLL Name: WS2_32.dll 
$ x86_64-w64-mingw32-objdump --all-headers java-build/org/puredata/core/natives/windows/x86/pdnative.dll | grep 'DLL Name' 
    DLL Name: ADVAPI32.dll 
    DLL Name: KERNEL32.dll 
    DLL Name: msvcrt.dll 
    DLL Name: msvcrt.dll 
    DLL Name: pthreadGC2.dll 
    DLL Name: WS2_32.dll 
$ x86_64-w64-mingw32-objdump --all-headers java-build/org/puredata/core/natives/windows/x86/pthreadGC2.dll | grep 'DLL Name' 
    DLL Name: KERNEL32.dll 
    DLL Name: msvcrt.dll 
    DLL Name: WS2_32.dll 

Если вся эта зависимость больше не найдена в системе, или просто устаревает, возможно перекомпиляция библиотека DLL будет работать для вас.

Удачи.

Смежные вопросы