محمل الطبقة الصغير لا يمكن العثور على فئة في جرة التطبيق الصغير

StackOverflow https://stackoverflow.com/questions/872905

  •  22-08-2019
  •  | 
  •  

سؤال

بدأت أسأل هذا السؤال ومن ثم برزت الجواب قبل تقديمه. لقد قررت نشر السؤال على أي حال حتى يتسنى للناس الآخرين الذين واجهت نفس المشكلة سوف تكون قادرة على التعلم من أخطائي.


وأواجه مشكلة مع الصغير (أ <أ href = على "http://java.sun.com/javase/6/docs/api/javax/swing/JApplet.html" يختلط = "نوفولو noreferrer "> JApplet في الواقع) غير قادر على إنشاء مثيل فئة أخرى التي يتم تضمينها في نفس جرة باسم الصغير. باستثناء اراه على وحدة جاوة هو:

Exception in thread "thread applet-com.company.program.cm.hmi.MediatorApplet-1" java.lang.NoClassDefFoundError: com/company/program/cm/cs/JDataStore
    at com.company.program.cm.hmi.MediatorApplet.getMediator(MediatorApplet.java:63)
    at com.company.program.cm.hmi.MediatorApplet.init(MediatorApplet.java:49)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: com.company.program.cm.cs.JDataStore
    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)
    ... 4 more
Caused by: java.io.IOException: open HTTP connection failed:http://localhost:8080/TransportHMI/pages/com/company/program/cm/cs/JDataStore.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)
    ... 8 more

وأنا أعلم أن الطبقة JDataStore يتم تضمينها في جرة. إذا كنت سرد محتويات باستخدام jar tvf CM_Library.jar أستطيع أن أرى أنه هناك تحت الحزمة المناسبة. ومع ذلك، فإن الاستثناءات بالسلاسل فوق الرصاص لي للاعتقاد بأن محمل الطبقة لا تبحث في الأرشيف عن JDataStore، وتبحث عن الملف JDataStore.class على خادم الويب بدلا من ذلك. لماذا هذا؟ محمل الطبقة يعرف لتحميل الطبقة MediatorApplet من الجرة، فلماذا لا تحقق من ذلك بالنسبة JDataStore كذلك؟ في حال كنت لم تحدد المعلمات بشكل صحيح على العلامة الصغير، سوف تشمل ذلك هنا أيضا:

<applet id="mediator-applet"
        width="0"
        height="0"
        codebase="./"
        archive="CM_Library.jar"
        code="com.company.program.cm.hmi.MediatorApplet">
</applet>
هل كانت مفيدة؟

المحلول

وجدت الجواب من النظر إلى اقتراح نشر لسؤال المتعلقة . لم إجابة إدي لن يحل تلك المشكلة بالذات، لكنها لم تعطيني الحل لإزالة الألغام.

ما هو غير واضح بشكل خاص من سؤالي هو أن الطبقة JDataStore يرث من فئة أخرى الذي يرد في جرة مختلفة. أنا لم يكن لديه للتعامل مع تفاصيل تنفيذ JDataStore في بضعة أشهر، لذلك أنا نسيت تماما تلك الفئة الأم، org.json.simple.JSONObject، لم تكن في CM_Library.jar، ولكن كان في json_simple-1.0 .2.jar. الإصلاح وبسيط إلى حد ما، مجرد نسخ جرة المفقودة إلى دليل مصدر برنامج وإضافة جرة المفقودة إلى قائمة مفصولة بفواصل من المحفوظات في سمة archive العلامة التطبيق الصغير:

<applet id="mediator-applet"
        width="0"
        height="0"
        codebase="./"
        archive="CM_Library.jar, json_simple-1.0.2.jar"
        code="com.company.program.cm.hmi.MediatorApplet">
</applet>

وهذا يعمل على إصلاح الخطأ. رسالة الاستثناء ليست مفيدة بشكل خاص. فإنه تقودك إلى الاعتقاد أنه لا يمكن العثور على الطبقة على الإطلاق، عندما المشكلة الفعلية هي أنه لا يمكن تحميل الطبقة السوبر للفئة المطلوبة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top