2010-01-29 18 views
10

मैं चींटी से जावा कार्य चलाने की कोशिश कर रहा हूं। मैं "org.apache.tools.ant.launch.Launcher" कक्षा चलाने की कोशिश कर रहा हूं। मैं किसी भी वर्ग नाम निर्दिष्ट किए बिना "NoClassDefFoundError" प्राप्त करना जारी रखता हूं। मुझे एक "क्लास नॉटफाउंड अपवाद" भी मिल रहा है जिसमें एक संदेश प्रदर्शित किया गया है "मुख्य वर्ग नहीं मिला: कार्यक्रम बाहर निकल जाएगा"। यहाँ त्रुटिNoClassDefFoundError बिना किसी वर्ग के नाम

[java] Exception in thread "main" java.lang.NoClassDefFoundError: 
[java] Caused by: java.lang.ClassNotFoundException: 
[java] at java.net.URLClassLoader$1.run(URLClassLoader.java:200) 
[java] at java.security.AccessController.doPrivileged(Native Method) 
[java] at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
[java] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:252) 
[java] at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) 
[java] Could not find the main class: . Program will exit. 
[java] Java Result: 1 

अब मैं एक चींटी जार से एक चींटी वर्ग को चलाने के लिए कोशिश कर रहा हूँ का एक टुकड़ा है और मैं classpath जहां इस वर्ग फ़ाइल "classpathref" विशेषता का उपयोग रहता है specifiy, हालांकि मैं अब भी यह संदेश मिलता है। मैंने मैनिफेस्ट की जांच करने के लिए चींटी जार की जांच की और "मुख्य" वर्ग ठीक से निर्दिष्ट किया गया है (यह "org.apache.tools.ant.launch.Launcher" है)। मैंने अपने सभी संसाधनों को समाप्त कर दिया है। कृपया सहायता कीजिए ! ! !

ps: मेरा पर्यावरण उबंटू 9.04

उत्तर

0

इस लाइन से पर ग्रहण है:

[java] Could not find the main class: . Program will exit. 

यह java.exe करने के लिए अपने फोन के रूप में हालांकि एक . जहां यह एक वर्ग के नाम को उम्मीद रही है लग रहा है। शायद आप कमांडलाइन पर क्लासपाथ को इंगित करने का प्रयास कर रहे हैं लेकिन -cp या -classpath ध्वज के साथ प्रस्तावना उपेक्षा कर रहे हैं।

+0

यहाँ क्या मैं build.xml में है <जावा classname = "org.apache.tools.ant.launch.Launcher" classpathref = "webtest.lib" JVM = "$ {javahome.dir} है/bin/जावा "कांटा =" सच "असफलता =" झूठा "> – Seagull

+1

@ सुरक्षा। शायद आपको दिखाना चाहिए कि 'webtest.lib' कैसे परिभाषित किया गया है। –

1

यह एक भ्रामक त्रुटि हो सकती है जो क्लासपाथ से अनुपलब्ध वर्ग के बारे में नहीं है। यदि आप टोमकैट का उपयोग कर रहे हैं तो यह $ CATALINA_BASE/conf

में अनुपलब्ध conf फ़ाइलों के कारण हो सकता है यह एक गलत कॉन्फ़िगर किए गए चींटी स्थापना भी हो सकता है, कृपया अपने JAVA_HOME और ANT_HOME env चरों को जांचें या किसी अन्य चींटी स्थापना को आज़माएं।

5

अधिकतर आपके क्लासपाथ को गलत कॉन्फ़िगर किया गया है।

कम से कम CLASSPATH शामिल करना चाहिए: अपने XML पार्सर के लिए

  • ant.jar और चींटी-launcher.jar
  • जार/वर्गों
  • JDK के लिए आवश्यक जार/ज़िप फ़ाइलों

(से ant manual)

इसके अलावा, आप वर्तमान में चींटी को दोबारा लॉन्च हो रहे हैं निर्देशिका (एक ही build.xml निष्पादित)। शायद आप "डीआईआर" संपत्ति सेट करना चाहेंगे।

1

चींटी लांचर उम्मीद निम्नलिखित पैरामीटर

java -Dant.home=c:\ant org.apache.tools.ant.launch.Launcher [options] [target] 

मैं affraid हम आपको जवाब देने आगे नहीं बढ़ सकता है यदि आप अपने पूरे build.xml फ़ाइल पेस्ट नहीं है हूँ।

बस नीचे दिए गए के रूप में अपने पूर्ण नमूना देने की कोशिश:

<java 
      classname="org.apache.tools.ant.launch.Launcher" 
      fork="true" 
      failonerror="true" 
      dir="${sub.builddir}" 
      timeout="4000000" 
      taskname="startAnt" 
    > 
     <classpath> 
      <pathelement location="${ant.home}/lib/ant-launcher.jar"/> 
     </classpath> 
     <arg value="-buildfile"/> 
     <arg file="${sub.buildfile}"/> 
     <arg value="-Dthis=this"/> 
     <arg value="-Dthat=that"/> 
     <arg value="-Dbasedir=${sub.builddir}"/> 
     <arg value="-Dthe.other=the.other"/> 
     <arg value="${sub.target}"/> 
</java> 

यह एक संभव गलतफहमी के साथ आप प्रदान करने के लिए अत्यंत उपयोगी होगा।

आशा इस मदद करता है,

Ernani

4

यह चींटी कार्य की तरह जावा चलाने के लिए कोशिश कर रहा है, लेकिन किसी भी तरह क्लास के नाम के रूप में चलाने के लिए JVM करने के लिए एक खाली स्ट्रिंग गुजर रहा है लग रहा है।

 
C:\>java "" 
Exception in thread "main" java.lang.NoClassDefFoundError: 
Caused by: java.lang.ClassNotFoundException: 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:248) 
Could not find the main class: . Program will exit. 

(यह विंडोज पर है, लेकिन मुझे नहीं लगता कि बहुत अधिक अंतर बना देता है।)

मैं: अगर मैं एक उद्धृत रिक्त स्ट्रिंग के साथ सीधे JVM चलाने मैं एक ही स्टैकट्रेस प्राप्त कर सकते हैं अलेक्जेंडर पोग्रेबनिक की टिप्पणी पर एएफएफ के जवाब पर ही सुझाव दे सकते हैं। शायद webtest.lib संपत्ति में रिक्त स्थान है?

इसके अलावा, ant कार्य का उपयोग करने के बजाय सीधे ant को जावा के माध्यम से कॉल करने का एक अच्छा कारण है?

0

संदेह में, एंटी-वी का आह्वान करें और अपनी सभी परिवर्तनीय घोषणाएं देखें, और पूरी कमांडलाइन जावा को भेजी गई है।

कुछ पथ-जैसी मात्राओं का बेसब्री से मूल्यांकन किया जाता है, जबकि अन्य आलसी मूल्यांकन किए जाते हैं। मुझे बहुत सारी समस्याएं थीं जहां मैंने पूर्व में से एक का उपयोग किया था, जब मेरी चींटी लिपि एक जार बनाने का इरादा रखती थी जिसे बाद के कार्य द्वारा उपयोग किया जाएगा। तब तक जब मैंने कॉल का आह्वान किया, तब से उसने क्लासपाथ से अपने जार को पहले से ही हटा दिया था। ... -classpath org.apache.tools.ant.launch.Launcher

बजाय

जावा:

अगर मैं एक जंगली अनुमान लगाने के लिए किया था, मैं अपने कमांडलाइन शर्त होगी की तरह कुछ देखा

जावा ... -classpath foo.jar; bar.jar org.apache.tools.ant.launch.Launcher

की तरह आप उम्मीद

3

https://blogs.oracle.com/sreekanth/entry/java_lang_noclassdeffounderror_org_codehaus

java.lang.NoClassDefFoundError: org/codehaus/plexus/classworlds/launcher/Launcher 
By sreekanth on Nov 23, 2010 

हाल ही में जब मैं कुछ Maven स्क्रिप्ट को चलाने के लिए कोशिश कर रहा हूँ, मैं इस अपवाद हो रही है:

Exception in thread "main" java.lang.NoClassDefFoundError: org/codehaus/plexus/classworlds/launcher/Launcher 

Caused by: java.lang.ClassNotFoundException: org.codehaus.plexus.classworlds.launcher.Launcher 
at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:248) 

Could not find the main class: org.codehaus.plexus.classworlds.launcher.Launcher. Program will exit. 

कुछ समय बिताने के विभिन्न संयोजनों की कोशिश के बाद, मैंने पाया कि इस वजह से मैं दोनों M2_HOME और है M3_HOME मेरे पर्यावरण चर में सेट है। एक बार जब मैंने अपने पर्यावरण चर से M2_HOME हटा दिया, तो मैं इसे फिर से काम कर सकता था। क्या यह किसी के लिए कुछ गंभीर समय बचा सकता है।

0

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

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