2013-03-08 7 views
6

जब Java Attach API का उपयोग कर, मैं (विभिन्न मशीनों पर इसे करने की कोशिश) केवल पर नीचे दिए गए लिंक त्रुटि मिल रही है लिनक्स:जावा संलग्न एपीआई: UnsatisfiedLinkError

Exception in thread "main" java.lang.UnsatisfiedLinkError: sun.tools.attach.WindowsAttachProvider.tempPath()Ljava/lang/String; 
     at sun.tools.attach.WindowsAttachProvider.tempPath(Native Method) 
     at sun.tools.attach.WindowsAttachProvider.isTempPathSecure(WindowsAttachProvider.java:74) 
     at sun.tools.attach.WindowsAttachProvider.listVirtualMachines(WindowsAttachProvider.java:58) 
     at com.sun.tools.attach.VirtualMachine.list(VirtualMachine.java:134) 
     at sun.tools.jconsole.LocalVirtualMachine.getAttachableVMs(LocalVirtualMachine.java:151) 
     at sun.tools.jconsole.LocalVirtualMachine.getAllVirtualMachines(LocalVirtualMachine.java:110) 
     ... 

दिलचस्प बात यह है सोलारिस और विंडोज पर यह काम कर रहा बॉक्स के बाहर

मैंने java.library.path निर्दिष्ट करने के लिए libattach.so वाली निर्देशिका को इंगित करने के लिए कई संयोजनों की कोशिश की लेकिन बिना किसी किस्मत के।

यहां क्या गलत है?

और बोनस प्रश्न:
क्या यह देखने का कोई तरीका है कि कौन सी मूल पुस्तकालय वास्तव में जावा क्लास से बंधी है?

+0

क्या आप इस पुस्तकालय को LD_LIBRARY_PATH में पा सकते हैं? – longhua

+0

मैंने इसे एलडी_LIBRARY_PATH में जोड़ने का भी प्रयास किया - लेकिन इससे मदद नहीं मिली है। और सोलारिस पर यह एलडी_LIBRARY_PATH पर भी नहीं है लेकिन यह यहां काम कर रहा है। – MRalwasser

+1

ऐसा लगता है कि लाइब्रेरी आपके द्वारा उपयोग की जाने वाली जावा क्लास के साथ असंगत है। क्या वे एक ही जेडीके से हैं? क्या एलडी_LIBRARY_PATH या java.library.path में एक ही नाम के साथ कोई अन्य लाइब्रेरी है? – longhua

उत्तर

6

विभिन्न प्लेटफार्मों पर विभिन्न अटैचप्रोवाइडर का उपयोग किया जाता है। लिनक्स पर, इसे sun.tools.attach.WindowsAttachProvider का उपयोग नहीं करना चाहिए। यह विंडोज के लिए है।

[solaris] sun.tools.attach.SolarisAttachProvider 
[windows] sun.tools.attach.WindowsAttachProvider 
[linux] sun.tools.attach.LinuxAttachProvider 

यह एक संसाधन फ़ाइल META-INF \ सेवाओं \ com.sun.tools.attach.spi.AttachProvider (आमतौर पर इस फाइल tools.jar में मौजूद है) में किया गया है। यह इस संसाधन फ़ाइल की पहली घटना प्राप्त करने के लिए क्लासस्पैट खोजेगा और इससे अटैचप्रोवाइडर कार्यान्वयन कक्षा पढ़ेगा।

तो आप शायद अपने क्लासस्पैट में sun.tools.attach.WindowsAttachProvider खोज करके इस समस्या को हल कर सकते हैं। संभवतः आपने विंडोज़ से एक टूल.जर शामिल किया है।

संबंधित मुद्दे