ग्रहण से java.library.path कैसे सेट करें


209

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

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


1
मैंने इसे VM तर्क के रूप में जोड़कर किया है और इसने काम किया है। आपने वास्तव में यह कैसे किया?
माइकल मायर्स

जवाबों:


297

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

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

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

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

मूल पुस्तकालय स्थान


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

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

1
मैं एक विरासत परियोजना पर काम कर रहा हूं जिस पर मेरा बहुत कम नियंत्रण है। मैं निश्चित रूप से परियोजना संरचना को नहीं बदल सकता। इस पल के लिए मेरा सब कुछ मेरे पेट पर डाल देना है - लेकिन यह इतना अच्छा नहीं है।
डैन

1
OS के आधार पर, आप एक निर्देशिका बना सकते हैं जो अन्य पुस्तकालयों के लिए सभी प्रतीकात्मक लिंक है? या कम से कम विकास के उद्देश्यों के लिए आप सभी लिबास को एक निर्देशिका में कॉपी कर सकते हैं।
जॉन गार्डनर

2
मैं यह छड़ी नहीं बना सकता। मैं मूल पुस्तकालय पथ जोड़ सकता हूं, लेकिन जब मैं वापस जाने के लिए ओके पर क्लिक करता हूं, तो परियोजना संपत्तियों में फिर से कूद जाता हूं, यह "कोई नहीं" कहता है। मैं
15:59 पर

37

यदि आप इसे VM तर्क के रूप में जोड़ रहे हैं, तो सुनिश्चित करें कि आप इसके साथ उपसर्ग करें -D:

-Djava.library.path=blahblahblah...

3
यह पोस्ट देखें: stackoverflow.com/a/2309723/510583 । -Djava.library.path = "$ {कार्यक्षेत्र_लोक: परियोजना} \ lib; $ {env_var: पथ}"
leo

23

स्वीकृत उत्तर में बताए गए तरीके को छोड़कर, यदि आपके पास अपनी परियोजना में एकल मूल निवासी हैं तो दूसरा तरीका है।

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

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

11

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

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

Window->
  Preferences->
    Java->
      Installed JREs

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

आप अलग-अलग JRE / JDK को अलग-अलग मापदंडों के साथ सेट कर सकते हैं और कुछ परियोजनाएँ एक का उपयोग करती हैं, दूसरी परियोजनाएँ दूसरे का उपयोग करती हैं।


8

आप बस जोड़ सकते हैं -Djava.library.path=yourPathकरने के लिए eclipse.ini


6

बस *.dllफ़ाइलों को अपने में जोड़ेंc:/windows

आप java.library.path को निम्न कोडों से प्राप्त कर सकते हैं: और फिर आपको प्राप्त होने वाले किसी भी पथ के तहत dll फ़ाइलें जोड़ें

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"));
    }
}

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

इसके लिए धन्यवाद। DLL को डालने का विचार c:/windowsमेरे लिए साबित हुआ कि यह केवल एक पथ मुद्दा था और DLL के साथ कोई समस्या नहीं थी।
vegemite4me

5

ऊपर दिए गए किसी भी समाधान ने मेरे लिए काम नहीं किया (EDse Juno with JDK 1.7_015)। जावा केवल उन पुस्तकालयों को खोज सकता है जब मैंने उन्हें project_folder / lib से project_folder में स्थानांतरित किया था।


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

5

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

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


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

4

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

-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
इसके अलावा - रन कॉन्फ़िगरेशन में, "कॉमन" टैब पर जाएं और रन कॉन्फ़िगरेशन को बचाने के लिए अपनी परियोजना में एक जगह चुनें। यह आपको उस रन कॉन्फ़िगरेशन (xxxx.launch फ़ाइल) में जांच करने की अनुमति देता है ताकि आपकी टीम के अन्य लोग उसका पुन: उपयोग कर सकें।
स्कॉट स्टैनफ़ील्ड

3

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

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

    Path  <-  ${workspace_loc:name_of_the_project}\lib

लेकिन शायद सीधे वीएम तर्क -Djava.library.pathमें तर्क टैब?
कैम्पा


1

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

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 - यह क्या है और कैसे उपयोग करना है


0

शायद ही कभी हमें प्रोजेक्ट पर सीधे राइट क्लिक करके Java बिल्ड पाथ मिलता है। तो गुणों पर जाएं…।राइट क्लिक करें और गुणों पर जाएं

फिर जावा बिल्ड पथ पर क्लिक करेंगुण स्क्रेन

ऐड एक्सटर्नल जार पर क्लिक करें

टैब ऐड एक्सटर्नल जार्स पर क्लिक करें और अपनी कंप्यूटर फाइल का रास्ता दें, जहाँ पर यू जर्स जमा हो।


0

यहाँ एक और तय है:

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


0

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

उदाहरण :

-Djava.ext.dirs=cots_lib

cots_libआपकी बाहरी फ़ोल्डर लाइब्रेरी कहां है


-1

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.