2010-02-24 15 views
5

में कक्षाओं में से एक नहीं ढूंढ सकता है मुझे एफएफ मिलता है। जावा कंसोल कभी कभी में त्रुटि:ऐप्पल क्लास लोडर जार

Exception in thread "thread applet-my.package.MyApplet-10" java.lang.NoClassDefFoundError: another/package/SomeClass 
    at my.package.MyApplet.init(MyApplet.java:95) 
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.ClassNotFoundException: another.package.SomeClass 
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClassInternal(Unknown Source) 
    ... 3 more 
Caused by: java.io.IOException: open HTTP connection failed:https://myserver/mycontext/applets/another/package/SomeClass.class 
    at sun.plugin2.applet.Applet2ClassLoader.getBytes(Unknown Source) 
    at sun.plugin2.applet.Applet2ClassLoader.access$000(Unknown Source) 
    at sun.plugin2.applet.Applet2ClassLoader$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    ... 7 more 

मेरे एप्लेट टैग इस प्रकार है:

<applet codebase="../../applets" code="my.package.MyApplet" class="invisible" id="myApplet"> 
    <param value="value0" name="param0"/> 
    ... 
    <param value="valueN" name="paramN" /> 
    <param value="folder/myApplet__0.0.1177.jar,folder/commons-io-1.3.2__0.0.1177.jar,..." name="cache_archive"/> 
    <param value="0.0.1177.0,0.0.1177.0,...," name="cache_version"/> 
</applet> 

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

मुझे applet fails to load class from jar और Applet class loader cannot find a class in the applet's jar से अवगत है, लेकिन मुझे लगता है कि वे मेरे मामले पर लागू नहीं हैं। SomeClass और MyApplet एक ही जार में हैं और पृष्ठ को स्थानीय रूप से एक्सेस किया जा रहा है।

+0

मुझे लगता है कि क्या होता है यह है कि जावा ब्राउज़र प्लग-इन myApplet__0.0.1177 से कक्षा को लोड करने में सक्षम नहीं था।जार और इसलिए कोडबेस फ़ोल्डर में इसकी तलाश में चला गया। अब सवाल यह है कि यह MyApplet को लोड करने में सक्षम है लेकिन कुछ क्लास नहीं है? –

+0

क्लाइंट पक्ष पर जावा का किस संस्करण का उपयोग किया जाता है? – uthark

+0

आपने कहा कि पृष्ठ को स्थानीय रूप से एक्सेस किया जा रहा है, लेकिन लॉग में मैं "myserver" देखता हूं। क्या यह आपकी लोकहोस्ट मशीन का नाम है? इसके अलावा, आप परीक्षण के लिए किस ब्राउज़र का उपयोग करते हैं? इंटरनेट एक्सप्लोरर, फ़ायरफ़ॉक्स? – uthark

उत्तर

1
Caused by: java.io.IOException: open HTTP connection failed:https://myserver/mycontext/applets/another/package/SomeClass.class 

ऐसा लगता है कि HTTPS सर्वर से जार फ़ाइल को पुनर्प्राप्त करने के साथ एक कनेक्शन समस्या है।

मुझे नहीं पता कि जावा का कौन सा संस्करण आप चल रहे हैं, लेकिन आप अपनी समस्या से संबंधित दोष के कारण की जांच कर सकते हैं here

यदि यह समस्या नहीं है, तो सुनिश्चित करें कि डाउनलोड होने पर आपकी जेएआर फ़ाइल के लिए पर्याप्त कैशिंग है और यह लॉन्च करने में विफल रहता है। दुर्भाग्यवश यह कोड मुद्दा नहीं है।

अद्यतन क्या आपकी कक्षा SomeClass किसी भी दूरस्थ सर्वर या डेटाबेस को किसी भी मौके से एक्सेस कर रही है?

अपवाद स्पष्ट रूप से दिखाता है कि AccessControl विशेषाधिकार है जिसे अस्वीकार कर दिया गया है।

at sun.plugin2.applet.Applet2ClassLoader.getBytes(Unknown Source) 
    at sun.plugin2.applet.Applet2ClassLoader.access$000(Unknown Source) 
    at sun.plugin2.applet.Applet2ClassLoader$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 

याद रखिए, कि एप्लेट फ्लैश की तरह हैं ऑब्जेक्ट्स:

  • वे दोनों डाउनलोड किया है और ग्राहक की ओर से चलाए जा रहे हैं।

केवल अंतर यह है कि एप्लेट, इस तरह के रूप में, यह कंपनी DMZ (डी-सैन्य जोन) के पीछे छिपा सर्वर से कनेक्ट नहीं होना चाहिए अभिगम नियंत्रण नियमों की बहुत सारी के साथ डिजाइन किए गए थे है आदि

अगर ऐसी बात है, मैं तुम्हें एप्लेट के बाहर अपने डेटा पुनः प्राप्त करने के लिए एक रास्ता (सर्वलेट कोशिश?)

अद्यतन 2 यह JVM विश्वसनीय प्रमाणपत्र अपने हस्ताक्षर किए जार के साथ मैच के लिए नहीं मिल रहा है लगता है खोजने के सुझाव देते हैं।

  1. के बाद से अपने जार फ़ाइल है पर हस्ताक्षर किए सुनिश्चित करें कि जार फ़ाइल अपने विश्वसनीय प्रमाणपत्र (याद रखें, इस पर भरोसा किया जाना चाहिए) बात कर सकते हैं।
  2. अधिक जानकारी की जांच: http://faq.javaranch.com/java/HowCanAnAppletReadFilesOnTheLocalFileSystem और http://www.developer.com/article.php/3303561
+0

यदि यह एक कनेक्शन समस्या है, तो अपवाद संदेश में यूआरएल https: // myserver/mycontext/applets/myApplet__0.0.1177.jar इसके बजाय नहीं होना चाहिए? ऐसा लगता है कि प्लग-इन कक्षा फ़ाइल को कोडबेस में ही ढूंढ रहा है। –

+0

मेरी अद्यतन पोस्ट की जांच करें। –

+0

SomeClass किसी भी दूरस्थ सर्वर या डेटाबेस तक नहीं पहुंच रहा है। हालांकि, स्थानीय फाइल सिस्टम से फाइलें पढ़ रही हैं। मैंने इसे एक विशेषाधिकार प्राप्त कॉल में लपेट लिया है। मैंने जार पर भी हस्ताक्षर किए हैं। मुझे लगता है कि जावा ब्राउज़र प्लग-इन विशेषाधिकार प्राप्त पहुंच कर रहा है। –

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