2012-10-09 27 views
7

मैं पोर्टेबल उपकरणों को पढ़ने के लिए जावा एप्लेट से हस्ताक्षर किए कोशिश कर रहा हूँ में मूल निवासी लाइब्रेरी भी शामिल है .... मैं http://code.google.com/p/jmtp/w/list पर एक 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 
देता है जब मैं NetBeans में इसे चलाने

मैं खोज की है और पाया

-Djava.library.path="c:\jmtp\native\windows"
के रूप में "रन" jmtp ... परियोजना पर मैं दायाँ क्लिक किया है और गुणों पर नेविगेट और फिर चयनित की परियोजना में देशी पुस्तकालय के रूप में .dll फ़ाइल और चयनित वी एम विकल्प शामिल करने की आवश्यकता है कि मैं और उस jmtp.dll फ़ाइल को c: \ jmtp फ़ोल्डर

में रखा गया है

लेकिन इसके साथ ही त्रुटि दिखाई लगातार मेरी कोड

 
    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(); 

    } 
} 

है कृपया, मुझे बताओ, इस मुद्दे

+0

आप स्रोत संग्रह में संलग्न बैट फ़ाइलों से सीधे तर्कों को कॉपी और पेस्ट भी कर सकते हैं। –

उत्तर

21

अंत में मैं समाधान नहीं मिला है क्या आदेश देशी पुस्तकालय हम की जरूरत है शामिल करने के लिए netbeans में निम्नलिखित चरणों को जोड़ने के लिए

 
    ==>Right click on the Project 
    ==>Properties 
    ==>Click on RUN 
    ==>VM Options : -Djava.library.path="C:\Your Directory where Dll is present" 
    ==>Ok 

+6

इसने नेटबीन्स में प्रोजेक्ट चलाने के लिए मेरे लिए काम किया है, लेकिन एक बार जब जार बनाया गया है तो वही त्रुटि वापस आ गई है। तो यह लंबे समय तक मदद नहीं कर रहा है। –

+0

मेरे लिए काम करता है, पथ में डीएलएल शामिल न करें, केवल वह निर्देशिका जहां यह रहता है। –

+0

आउटपुर जार का निर्माण होने के बाद हमारे पास यह डीएल/सेटिंग्स कैसे हो सकती है? –

6

आप लाइब्रेरी को प्रोग्राम के भीतर से भी लोड कर सकते हैं

System.loadLibrary("jmtp") 

प्लेस फ़ोल्डर प्रत्यक्ष जावा परियोजना के तहत फ़ाइल jmtp.dll युक्त इस लाइन ing।

वैकल्पिक रूप से, मैं इस कोशिश की और यह काम करता है:

System.setProperty("java.library.path", "libs"); 

"libs" जबकि फ़ोल्डर कि dll निहित और जावा प्रोजेक्ट फ़ोल्डर के तहत सीधे रखा जाता है।

मैंने देखा है कि jmtp.dll एक 64-बिट JDK साथ निम्नलिखित अपवाद देता है:

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) 

आप इस काम करने के लिए एक 32-बिट JDK पर कार्यक्रम चलाने की आवश्यकता होगी।

-1

थोड़ी देर के लिए इसके साथ संघर्ष करने के बाद, मुझे समस्या का समाधान समाधान मिला है।

मैं पता लगाने के लिए क्या java.library.path के लिए वास्तविक मूल्य अपने सिस्टम पर था System.out.println(System.getProperty("java.library.path")); इस्तेमाल किया मेरी कोड के भीतर। यह सिस्टम और उपयोगकर्ता पर्यावरण चर के लिए कम से कम %PATH% चर का एक संयोजन है। तो मुझे बस इतना करना था कि मेरे पुस्तकालयों का स्थान उन में से किसी एक को जोड़ दिया गया और समस्या दूर हो गई।