2011-01-24 26 views
6

मैंने एक्लिप्स आईडीई का उपयोग करके एक एप्लेट प्रोग्राम बनाया है। अब im बनाने के रूप में नीचे फाइल .html:त्रुटि: java.lang.NoClassDefFoundError: चेस (गलत नाम: पोंग/चेस)

<html> 
<APPLET CODE="Chase.class" width=500 height=400> 
</APPLET> 
</html> 

इम इस फाइल को क्रियान्वित जब त्रुटि im हो रही है:

java.lang.NoClassDefFoundError: Chase (wrong name: pong/Chase) 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClass(Unknown Source) 
at java.security.SecureClassLoader.defineClass(Unknown Source) 
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source) 
at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source) 
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 

ग्रहण आईडीई में नई परियोजना बनाया है और "पोंग" में कार्यक्रम पैक है है फ़ोल्डर।

क्या कोई यह समझा सकता है कि यह त्रुटि क्यों हो रही है?

संपादित करें:

स्पष्टीकरण के लिए, कुछ Chase.java कोड लाइनों जोड़ना।

package pong; 


import java.applet.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.util.Random; 



public class Chase extends Applet implements Runnable 
{ ... } 
+0

http://stackoverflow.com/questions/3298988/java-lang-noclassdeffounderror-when-trying-to-embed-an-applet –

उत्तर

8

कोई वर्ग के नाम Chase अपने classpath में नहीं है: यह सरल एप्लेट है।

wrong name निर्दिष्ट करता है कि निर्दिष्ट पैकेज के साथ कक्षा नाम के साथ गलती हो सकती है।

अपनी कक्षा उदाहरण के लिए package वाणी यदि

package a; 
public class MyApplet extends Applet{} 

फिर HTML में

अपने मामले में

देना a.MyApplet

अद्यतन ऐसा लगता है

<APPLET CODE="pong.Chase.class" width=500 height=400>

भी dir संरचना होना चाहिए

- - - - - 
     | 
     |-your html file 
     |-pong folder 
      | 
      |- Chases.class 

क्या करेंगे अगर पैकेज का नाम pong

+0

मदद का उपयोग करने की कोशिश की। त्रुटि अभी भी कुछ है: ओड: कक्षा पोंग/चेस.क्लास नहीं मिला। java.lang.ClassNotFoundException: pong.Chase.class \t sun.plugin2.applet.Applet2ClassLoader.findClass (अज्ञात स्रोत) \t java.lang.ClassLoader.loadClass पर (अज्ञात स्रोत) \t java.lang.ClassLoader पर पर .loadClass (अज्ञात स्रोत) \t sun.plugin2.applet.Plugin2ClassLoader.loadCode (अज्ञात स्रोत) .... आदि – GamDroid

+0

अद्यतन जांच .................... ..... –

+0

हां पैकेज का नाम "पोंग" है और ऊपर दिए गए चरणों को करने के बाद यह स्वतंत्र रूप से निष्पादित होने पर काम करता है। हालांकि जब मुझे किसी वेबसाइट के कस्टम वेबपृष्ठ में कस्टम HTML कोड जोड़ना होता है तो त्रुटि उपरोक्त के समान होती है। – GamDroid

0

आप अपने एप्लेट टैग में पैकेज हिस्सा भूल गया है:

<APPLET CODE="pong.Chase.class" width=500 height=400> 
</APPLET> 
2

मुझे लगता है कि समस्या मूल रूप से के रूप में है @ जिगार जोशी ने ध्यान दिया है, लेकिन इसके लिए थोड़ा झुर्रियों के साथ। मुझे लगता है कि आपके पास एक वर्ग है जिसका एफक्यूएन "पोंग.चेज" है, लेकिन आपने क्लासपाथ स्थापित किया है ताकि "चेस.क्लास" वाली निर्देशिका क्लासपाथ पर हो। फिर आपने एप्पल लोडर को "चेस.क्लास" के रूप में कक्षा की तलाश करने के लिए कहा है।

क्लासलोडर को बाइटकोड फ़ाइल मिली है, लेकिन फिर जब इसे लोड करने का प्रयास किया गया, तो उसने देखा है कि कक्षाएं एफक्यूएन "चेस" के बजाए "पोंग। चेस" है ... जैसा आपने दिया है उसके नाम से अनुमानित । Ergo ... NoClassDefFoundError, एक संदेश के साथ जो आपको बताता है कि वर्ग का नाम गलत है। - codeBase विशेषता का उपयोग

<APPLET CODE="pong.Chase.class" width=500 height=400></APPLET> 

वैकल्पिक रूप से:

ठीक लगता है कि "पोंग" निर्देशिका की पेरेंट निर्देशिका classpath पर है, और उपयोग करने के लिए है।

वैकल्पिक रूप से 2 - अपने जावा क्लास में package घोषणा से छुटकारा पाएं।

वैकल्पिक रूप से 3 - <object> तत्व का उपयोग करें। <applet> तत्व बहिष्कृत है।

संदर्भ: http://www.w3.org/TR/html401/struct/objects.html

+0

लोड करने के लिए उस सर्वर में ऊपर दिखाए गए उसी संरचना में 'कक्षा' भी प्रदान करने की आवश्यकता है, वैकल्पिक 2 कार्य में कोई संदेह नहीं है। मुझे इस एप्लेट कोड स्निपेट को वेबपृष्ठ में जोड़ना है। जब जोड़ा गया, तो त्रुटि पहले की तरह ही है। लेकिन जब एचटीएमएल फ़ाइल स्वतंत्र रूप से निष्पादित की जाती है तो काम करता है। ऐसा क्यों है? – GamDroid

+0

@GamDroid - मुझे संदेह है कि यह निर्देशिका संरचना है; @ जिगार जोशी का अद्यतन जवाब देखें। –

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