/ / ग्रहण के साथ जार फ़ाइल बनाने में त्रुटि [डुप्लिकेट] - जावा, ग्रहण, मेवेन, जार, noclassdeffounderror

ग्रहण [डुप्लिकेट] के साथ जार फ़ाइल बनाने में त्रुटि - जावा, ग्रहण, मैवेन, जार, नोक्लास्डेफॉउंडर आतंक

इसलिए मैंने ग्रहण पर एक प्रोजेक्ट बनाया, और मैं इसके साथ एक जेएआर फाइल बनाना चाहता हूं। प्रोजेक्ट फ़ोल्डर में निम्न फ़ोल्डर्स हैं:

  • src (दो संकुल शामिल हैं)
  • जेआरई सिस्टम पुस्तकालयों
  • संदर्भित पुस्तकालय ("jasypt-1.9.2.jar" और "json_simple-1.1.jar")
  • libs (फिर से: "jasypt-1.9.2.jar" और "json_simple-1.1.jar")
  • संसाधन (छवियों और फाइलें युक्त)

यदि मैं यहां जाता हूं: प्रोजेक्ट के नाम पर क्लिक करें -> गुण -> जावा बिल्ड पथ -> लाइब्रेरीज़

मैं बिल्ड पथ में दोनों पुस्तकालयों को सही ढंग से जोड़ता हूं।

फिर मैं प्रोजेक्ट के नाम -> निर्यात पर क्लिक करने के लिए जाता हूं-> जेएआर फाइल और यहां मैं सबकुछ निर्यात करता हूं (बस सुनिश्चित करने के लिए ..!)। फिर मैंने मेनक्लास को एंट्री पॉइंट के रूप में रखा और फिर जेएआर फाइल बिना किसी समस्या के बनाई गई।

जब मैं JAR फ़ाइल (रजिस्ट्री.जर) निकालता हूं, तो मुझे लगता है कि इसमें इसकी सभी चीजें हैं: [पैकेज 1, पैकेज 2, मेटा-आईएनएफ, libs, संसाधन, .classpath, .project]

इसके अलावा, .classpath सही है (कम से कम, मुझे लगता है .. 100% सुनिश्चित नहीं है!):

   <?xml version="1.0" encoding="utf-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry exported="true" kind="lib" path="libs/jasypt-1.9.2.jar"/>
<classpathentry exported="true" kind="lib" path="libs/json_simple-1.1.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

लेकिन तब जब मैं कमांड लाइन (विंडोज और उबंटू दोनों) से रजिस्ट्री.जर फ़ाइल निष्पादित करने के लिए जाता हूं, इस तरह:

java -jar registry.jar

मुझे मिला:

Exception in thread "main" java.lang.NoClassDefFoundError: org/json/simple/parser/ParseException
at ...
at ...
Caused by: java.lang.ClassNotFoundException: org.json.simple.parser.ParseException
at java.net.URLClassLoader$1.run<Unknown Source>
at ...
at ...
... lots more

कार्यक्रम संकलन और ग्रहण के अंदर पूरी तरह से काम करता है। मैं सिर्फ यह समझ नहीं सकता कि समस्या क्या है ...

उत्तर:

जवाब के लिए 0 № 1

The .classpath फ़ाइल Java.It के लिए कोई अर्थ नहीं है केवल ग्रहण द्वारा प्रयोग किया जाता है ।जावा की पहचान नहीं है कि आवश्यक पुस्तकालयों के तहत कर रहे है lib जार फाइल में एंट्री ।

आप "d है आदेश के माध्यम से पुस्तकालयों के रास्ते को शामिल करने के लिए:

java -jar registry.jar -cp lib

जहां इस मामले में lib एक निर्यात जार के बगल में रहने वाले फ़ोल्डर है ।

आप "Maven का उपयोग कर पुन:, आप विधानसभा प्लगइन एक निष्पादन योग्य फ़ाइल उत्पन्न करने के लिए कर सकते हैं.देखें मैं Maven का उपयोग निर्भरता के साथ एक निष्पादन योग्य जार कैसे बना सकते हैं?.