I am trying to read portable devices from java signed applet.... I found a jmtp library on http://code.google.com/p/jmtp/w/list to get access to portable devices but when i run it in netbeans it gives error
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
I searched and found that i have to include .dll file as native library in project of jmtp... I right-clicked on project and navigated to properties and then Selected "Run" and Selected VM Option as
-Djava.library.path="c:\jmtp\native\windows"and placed that jmtp.dll file in c:\jmtp folder
But same error appears constantly my code is
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(); } }
please, tell me what is the issue
Finally i found the solution, In order to include native library we need to add following steps in netbeans
==>Right click on the Project ==>Properties ==>Click on RUN ==>VM Options : -Djava.library.path="C:\Your Directory where Dll is present" ==>Ok
After struggling with this for a while, I've found a working solution to the problem.
I used System.out.println(System.getProperty("java.library.path"));
within my code to find out what the actual value for java.library.path
was on my system. It's at least a concatenation of the %PATH%
variable for the system and user environment variables. So all I needed to the was add the location of my libraries to either of those and the problem went away.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With