Я начал задавать этот вопрос, а затем выяснил ответ перед его отправкой. Я решил оставить вопрос в любом случае, чтобы другие люди, столкнувшиеся с одной и той же проблемой, могли учиться на моих ошибках.Апплет-загрузчик классов не может найти класс в банке апплета
У меня возникли проблемы с апплетом (а) JApplet фактически не в состоянии создать экземпляр другого класса, который включен в том же банке, что и апплет. Исключение я вижу на консоли Java является:
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>
спасибо за это - я потратил часы, пытаясь понять это. – Matt
Полезно знать, что этот вопрос был полезен кому-то, кроме меня. –