Java 在Netbeans中包括本机库
我正在尝试从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: 1Java 在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
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)