Java 在Netbeans中包括本机库

Java 在Netbeans中包括本机库,java,netbeans-7,unsatisfiedlinkerror,java.library.path,wpd,Java,Netbeans 7,Unsatisfiedlinkerror,Java.library.path,Wpd,我正在尝试从java签名小程序读取便携式设备。。。。 我在上找到了一个jmtp库 要访问便携式设备,但在netbeans中运行时会出现错误 Exception in thread "main" java.lang.UnsatisfiedLinkError: no jmtp in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860) at java.lang.Run

我正在尝试从java签名小程序读取便携式设备。。。。 我在上找到了一个jmtp库 要访问便携式设备,但在netbeans中运行时会出现错误 Exception in thread "main" java.lang.UnsatisfiedLinkError: no jmtp 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 jmtp.PortableDeviceManagerImplWin32.(PortableDeviceManagerImplWin32.java:38) at jmtp.PortableDeviceManager.(PortableDeviceManager.java:34) at jmtp.Jmtp.main(Jmtp.java:23) Java Result: 1
System.loadLibrary("jmtp")


请告诉我问题出在哪里

最后我找到了解决方案,为了包含本机库,我们需要在netbeans中添加以下步骤
System.loadLibrary("jmtp")
==>右键单击项目 ==>属性 ==>单击运行 ==>VM选项:-Djava.library.path=“C:\Dll所在的目录” ==>好的

您也可以使用以下行从程序中加载库:

System.setProperty( "java.library.path", "libs" );
将包含文件
jmtp.dll
的文件夹直接放在Java项目下

或者,我尝试了这个方法,效果很好:

Exception in thread "main" java.lang.UnsatisfiedLinkError: libs/jmtp (.\libs/jmtp.dll is not a valid Win32 application. )
    at java.lang.ClassLoader.loadLibraryWithPath(ClassLoader.java:1018)
    at java.lang.ClassLoader.loadLibraryWithClassLoader(ClassLoader.java:982)
    at java.lang.System.loadLibrary(System.java:506)
    at podcasts.Transferer.main(Transferer.java:28)
而“libs”是包含dll的文件夹,直接放在java项目文件夹下

我注意到
jmtp.dll
对64位JDK给出了以下异常:


您需要在32位JDK上运行该程序,才能正常工作。

经过一段时间的努力,我找到了解决该问题的有效方法

我使用了
System.out.println(System.getProperty(“java.library.path”)

在我的代码中找到
java.library.path
在我的系统上的实际值。它至少是系统变量和用户环境变量的
%PATH%
变量的串联。因此,我所需要做的就是将我的库的位置添加到其中任何一个,问题就消失了

您还可以直接从源文件中附加的bat文件复制和粘贴参数。这对我在Netbeans中运行项目很有效,但一旦构建了jar,同样的错误又回来了。因此,从长远来看,它没有帮助。对我来说是有效的,不要在路径中包含dll,只包含它所在的目录。一旦outpur jar构建完成,我们如何在其中包含此dll/设置?
System.setProperty( "java.library.path", "libs" );
Exception in thread "main" java.lang.UnsatisfiedLinkError: libs/jmtp (.\libs/jmtp.dll is not a valid Win32 application. )
    at java.lang.ClassLoader.loadLibraryWithPath(ClassLoader.java:1018)
    at java.lang.ClassLoader.loadLibraryWithClassLoader(ClassLoader.java:982)
    at java.lang.System.loadLibrary(System.java:506)
    at podcasts.Transferer.main(Transferer.java:28)