javanetbeans-7unsatisfiedlinkerrorjava.library.pathwpd

Including Native Library in Netbeans


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


Solution

  • 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