我正在尝试从 java 签名的小程序读取便携式设备......
我发现了一个 jmtp 库http://code.google.com/p/jmtp/w/list http://code.google.com/p/jmtp/w/list访问便携式设备,但是当我在 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
我搜索并发现我必须在 jmtp 项目中包含 .dll 文件作为本机库...
我右键单击项目并导航到属性,然后选择“运行”并选择 VM 选项作为
-Djava.library.path="c:\jmtp\native\windows"
and placed that jmtp.dll file in c:\jmtp folder
但同样的错误不断出现
我的代码是
package jmtp;
import jmtp.PortableDevice;
import jmtp.PortableDeviceManager;
import jmtp.PortableDeviceObject;
import jmtp.PortableDeviceStorageObject;
public class Jmtp {
public static void main(String[] args) {
PortableDeviceManager manager = new PortableDeviceManager();
PortableDevice device = manager.getDevices()[0];
// Connect to my mp3-player
device.open();
System.out.println(device.getModel());
System.out.println("---------------");
// Iterate over deviceObjects
for(PortableDeviceObject object : device.getRootObjects()) {
// If the object is a storage object
if(object instanceof PortableDeviceStorageObject) {
PortableDeviceStorageObject storage = (PortableDeviceStorageObject)object;
for(PortableDeviceObject o2 : storage.getChildObjects()){
System.out.println(o2.getName());
}
}
}
manager.getDevices()[0].close();
}
}
最后我找到了解决方案,为了包含本机库,我们需要在 netbeans 中添加以下步骤
==>Right click on the Project
==>Properties
==>Click on RUN
==>VM Options : -Djava.library.path="C:\Your Directory where Dll is present"
==>Ok
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)