2009-06-05 26 views
196

से java.library.path कैसे सेट करें मैं पूरे ग्रहण परियोजना के लिए java.library.path कैसे सेट कर सकता हूं? मैं जावा लाइब्रेरी का उपयोग कर रहा हूं जो ओएस विशिष्ट फाइलों पर निर्भर करता है और एक .dll/.so/.jnilib खोजने की आवश्यकता है। लेकिन एप्लिकेशन हमेशा एक त्रुटि संदेश से बाहर निकलता है कि उन फ़ाइलों को लाइब्रेरी पथ पर नहीं मिला है।ग्रहण

मैं लाइब्रेरी पथ का उपयोग करने के लिए इस पूरे प्रोजेक्ट को कॉन्फ़िगर करना चाहता हूं। मैंने ग्रहण में कुछ रन कॉन्फ़िगरेशन के लिए पथ को वीएम तर्क के रूप में जोड़ने का प्रयास किया लेकिन यह काम नहीं किया।

+1

मैंने इसे एक वीएम तर्क के रूप में जोड़कर किया है और यह काम करता है। आपने यह कैसे किया –

उत्तर

286

लाइब्रेरी पथ से गड़बड़ न करें! ग्रहण स्वयं ही बनाता है!

इसके बजाय, अपनी परियोजनाओं के लिए लाइब्रेरी सेटिंग्स में जाएं और प्रत्येक जार/आदि के लिए मूल पुस्तकालय की आवश्यकता है, इसे पुस्तकालयों टैब में विस्तारित करें। पेड़ दृश्य में, प्रत्येक पुस्तकालय में स्रोत/जावाडोक और मूल पुस्तकालय स्थानों के लिए आइटम होते हैं।

विशेष रूप से: चयन Project, राइट क्लिक करें ->गुण/पथ जावा बिल्ड/पुस्तकालय टैब, एक .jar का चयन करें, यह विस्तार, मूल निवासी पुस्तकालय स्थान का चयन करें, संपादित क्लिक करें, फ़ोल्डर चयनकर्ता संवाद दिखाई देगा)

कमांड लाइन पर लाइब्रेरी पथ के साथ मेसिंग आपके आखिरी खाई प्रयास होना चाहिए, क्योंकि आप ऐसा कुछ तोड़ सकते हैं जो पहले से ही ग्रहण द्वारा ठीक से सेट हो चुका है।

Native library location

+0

ठीक है यह काम करने लगता है। अब सही संदेश त्रुटि संदेश में वास्तविक रूप से दिखाया गया है। आवश्यक पुस्तकालय नहीं मिला: /Users/janusz/Documents/workspace/SlideSelector/lib/libOpenCV.jnilib। फ़ाइल बिल्कुल इस निर्देशिका में है। लगता है कि एक और त्रुटि – Janusz

+6

है लेकिन यदि आपके पास एक से अधिक फ़ोल्डर जोड़ने हैं तो यह कैसे काम करता है? – Dan

+2

यह एक अच्छा सवाल है। आपके पास एक जार के लिए मूल पुस्तकालयों के एक से अधिक फ़ोल्डर क्यों हैं? मुझे पूरा यकीन है कि एक तरीका है जहां आप मूल पुस्तकालयों को खुद को जार में एम्बेड कर सकते हैं, ताकि यह जाने का रास्ता हो? –

32

आप एक वीएम तर्क के रूप में यह जोड़ रहे हैं, सुनिश्चित करें कि आप -D अवश्य लगा दें बनाना:

-Djava.library.path=blahblahblah... 
+3

इस पोस्ट को देखें: http://stackoverflow.com/a/2309723/510583। -Djava.library.path = "$ {workspace_loc: project} \ lib; $ {env_var: PATH}" – leo

4

भागो क्लिक करें
डीबग क्लिक करें ...
नई जावा आवेदन
क्लिक तर्क टैब
दूसरे बॉक्स (वीएम तर्क) में -डी प्रविष्टि

-Xdebug -verbose:gc -Xbootclasspath/p:jar/vbjorb.jar;jar/oracle9.jar;classes;jar/mq.jar;jar/xml4j.jar -classpath -DORBInitRef=NameService=iioploc://10.101.2.94:8092/NameService 

आदि ...

+1

इसके अलावा - रन कॉन्फ़िगरेशन में, "सामान्य" टैब पर जाएं और रन को सहेजने के लिए अपनी प्रोजेक्ट में कोई स्थान चुनें config। यह आपको उस रन कॉन्फ़िगरेशन (xxxx.launch फ़ाइल) में जांचने की अनुमति देता है ताकि आपकी टीम के अन्य लोग इसका पुन: उपयोग कर सकें। –

+0

यही एकमात्र चीज है जो मेरे साथ काम करती है, धन्यवाद –

11

किसी दिए गए आवेदन लांच के लिए, आप यह कर सकते हैं के रूप में जिम कहते हैं।

आप पूरे कार्यक्षेत्र के लिए यह निर्धारित करना चाहते हैं, तो आप भी यह

Window-> 
    Preferences-> 
    Java-> 
     Installed JREs 

के तहत निर्धारित कर सकते हैं प्रत्येक JRE एक "डिफ़ॉल्ट वीएम तर्क" (जो मेरा मानना ​​है कि पूरी तरह से अनदेखी कर रहे हैं किसी भी वीएम आर्ग सेट कर रहे हैं यदि है एक रन कॉन्फ़िगरेशन के लिए।)

आप अलग-अलग मानकों के साथ विभिन्न जेआरई/जेडीके भी स्थापित कर सकते हैं और कुछ परियोजनाएं एक का उपयोग कर सकती हैं, अन्य परियोजनाएं किसी अन्य का उपयोग करती हैं।

8

आप को eclipse.ini पर जोड़ सकते हैं।

6

बस अपने ग * .dll फ़ाइलें जोड़:/विंडोज़

आप java.library मिल सकती है।अनुवर्ती कोड से पथ: और उसके बाद आप जिस तरह से मंजूरी दे दी जवाब में वर्णित को छोड़कर

import java.util.logging.Logger; 

public class Test { 


    static Logger logger = Logger.getLogger(Test.class.getName()); 
    public static void main(String[] args) { 
    logger.info(System.getProperty("java.library.path")); 
    } 
} 
+0

इसका मतलब यह होगा कि आपके प्रोजेक्ट का उपयोग करने वाले प्रत्येक व्यक्ति को उन्हें वहां रखना होगा। – xtofl

+0

इसके लिए धन्यवाद। डीएलएल को 'सी:/विंडोज' में डालने का विचार मुझे साबित कर दिया कि यह सिर्फ एक पथ मुद्दा था और डीएलएल के साथ कोई समस्या नहीं थी। – vegemite4me

20

प्राप्त किसी भी पथ के अंतर्गत dll फ़ाइलों को आप जोड़ने के लिए, वहाँ एक और तरीका है कि अगर आप अपनी परियोजना में एक देशी libs की है।

    परियोजना गुण> जावा में
  • बिल्ड पथ> टैब "स्रोत" वहाँ अपने स्रोत-फ़ोल्डर
  • प्रत्येक प्रविष्टि के लिए की एक सूची है, वहाँ "मूल पुस्तकालय स्थानों", जो भी कार्यक्षेत्र के भीतर रास्तों का समर्थन करता है।
  • यह ग्रहण को आपके java.library.path में जोड़ देगा।
+2

कमाल !!!! बहुत बहुत धन्यवाद!!! जिसने मेरी समस्या का समाधान किया। मेरी परियोजना और एक जार में dylib जोड़ने की जरूरत है। देशी लाइब्रेरी स्थान सेटिंग तय यह तय! – ufk

5

मुझे लगता है कि java.library.path सेट करने के लिए एक अन्य कारण है। सबवर्सन कई पुस्तकालयों के साथ आता है और ग्रहण तब तक नहीं देखेगा जब तक java.library.path को जोड़ा जा सके। उदाहरण के लिए मैं ओएस-एक्स पर हूं, इसलिए पुस्तकालय \ opt \ subversion \ lib के अंतर्गत हैं। उनमें से बहुत सारे हैं और मैं उन्हें रखना चाहता हूं कि वे कहां हैं (उन्हें मानक lib निर्देशिका में कॉपी न करें)।

परियोजना सेटिंग्स इसे ठीक नहीं करेंगे।

+0

फिर, मुझे java.library.path पैरामीटर जोड़ने की आवश्यकता कहां है? – eLRuLL

3

एक और समाधान 'रन कॉन्फ़िगरेशन' खोलना होगा और फिर 'पर्यावरण' टैब में, जोड़े {पथ, मान} सेट करना होगा।

एक 'lib' परियोजना की जड़ में स्थित निर्देशिका जोड़ने के लिए उदाहरण के लिए,

Path <- ${workspace_loc:name_of_the_project}\lib 
+0

लेकिन शायद * तर्क * टैब में VM तर्क '-Djava.library.path'? – Campa

5

समाधान में से कोई भी (JDK 1.7_015 साथ ग्रहण जूनो) मेरे लिए काम किया इसके बाद के संस्करण। जब मैं उन्हें project_folder/lib से project_folder में ले जाता हूं तो जावा केवल पुस्तकालयों को ही ढूंढ सकता था।

+0

क्या? यह महत्वपूर्ण क्यों होना चाहिए ..? o_O – Campa

0

कभी-कभी हमें परियोजना पर सीधे दायाँ क्लिक करके जावा बिल्ड पथ नहीं मिलता है। तो गुण के लिए जाना .... Right Click and go to properties

तो टैब पर Properties Scrren

Click on add external jar

क्लिक बाहरी जार जोड़ सकते हैं और अपने कंप्यूटर फ़ाइल का रास्ता जहां यू जार संग्रहीत किया है दे जावा का निर्माण पथ पर क्लिक करें।

1

पाथ में देशी लाइब्रेरी फ़ोल्डर को शामिल करना याद रखें।

-1

ग्रहण आईडीई का उपयोग करने का सबसे आसान तरीका है। मेनू पर जाएं और पथ बनाएं सेट करें। इसे अपनी निर्देशिका में जावा जेडीके और जेआरई फ़ाइल पथ पर इंगित करें। बाद में आप बिल्ड पथ की जांच कर सकते हैं जहां संकलित फाइलें सेट की जा रही हैं। हालांकि डिफ़ॉल्ट रूप से बिन फ़ोल्डर में। सबसे अच्छी बात ग्रहण ही निर्माण पथ को संभालने के लिए अनुमति देने के लिए किया जाएगा और केवल यह समाधान है कि

0

यहाँ ऊपर दिया जाता है के लिए इसी तरह संपादित करने के लिए एक और ठीक है:

मेरे निर्माण प्रणाली (Gradle) एक आवश्यक देशी जोड़ा ग्रहण निर्माण पथ पर लाइब्रेरी (डीएलएल) (परियोजना पर राइट क्लिक करें -> गुण -> जावा बिल्ड पथ -> पुस्तकालय)। निर्माण प्रणाली को बताते हुए कि ग्रहण वर्गपाथ में देशी डीएलएल लाइब्रेरी को जोड़ने के लिए समस्या हल हो गई है।

1

मै मैक ओएस एक्स योसमेट और नेटबीन्स 8.02 का उपयोग कर रहा हूं, मुझे एक ही त्रुटि मिली है और मुझे मिला है कि सरल समाधान ऊपर जैसा है, यह तब उपयोगी होता है जब आपको परियोजना में मूल पुस्तकालय शामिल करने की आवश्यकता होती है।तो नेटबीन्स के लिए अगला करें:

1.- Right click on the Project 
2.- Properties 
3.- Click on RUN 
4.- VM Options: java -Djava.library.path="your_path" 
5.- for example in my case: java -Djava.library.path=</Users/Lexynux/NetBeansProjects/NAO/libs> 
6.- Ok 

मुझे आशा है कि यह किसी के लिए उपयोगी हो सकता है। लिंक जहां मुझे समाधान मिला वह यहां है: java.library.path – What is it and how to use

0

आप अपने ग्रहण में वीएम तर्क जोड़ सकते हैं।

उदाहरण: -Djava.ext.dirs = cots_lib

जहां cots_lib अपने बाहरी फ़ोल्डर पुस्तकालय है।