java.lang.ClassNotFoundException при попытке загрузить апплет из файла .jar - PullRequest
2 голосов
/ 12 декабря 2011

Извините за этот вопрос, но я новичок в Java. Я попытался найти похожие проблемы, и я нашел несколько ответов, но в моем случае ни один не помог, так что вот так:

Я пытаюсь загрузить Java-апплет на веб-странице. Предполагается, что апплет загружен из файла .jar (UCFApplet.jar), но я не могу его загрузить, несмотря ни на что.

Вот HTML-код для апплета:

<applet id="UCFApplet" height="200" width="200" 
  code="com.fujitsu.test.applet.UCFApplet" 
  archive="UCFApplet.jar">
</applet>

Файл jar находится на сервере, в той же папке, что и html-файл, который пытается его загрузить. Внутри jar-файла есть файл UCFApplet.class в папке com / fujitsu / test / applet.

Я получаю сообщение об ошибке на консоли Java:

Java Plug-in 1.6.0_29
Using JRE version 1.6.0_29-b11 Java HotSpot(TM) Client VM
User home directory = C:\Users\PTMAIAJ
----------------------------------------------------
c:   clear console window
f:   finalize objects on finalization queue
g:   garbage collect
h:   display this help message
l:   dump classloader list
m:   print memory usage
o:   trigger logging
q:   hide console
r:   reload policy configuration
s:   dump system and deployment properties
t:   dump thread list
v:   dump thread stack
x:   clear classloader cache
0-5: set trace level to <n>
----------------------------------------------------


load: class com.fujitsu.test.applet.UCFApplet not found.
java.lang.ClassNotFoundException: com.fujitsu.test.applet.UCFApplet
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.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)
Exception: java.lang.ClassNotFoundException: com.fujitsu.test.applet.UCFApplet

Как видите, я использую jre 1.6.0_29 build 11, который, как я понял на странице Oracle, является последней сборкой. Это происходит во всех браузерах (IE 9, FF, Chrome).

Я подозреваю, что это может быть связано с тем, что я не могу получить доступ к файлу .jar, потому что если я изменю html-код на фиктивное имя, такое как archive = "thisFileDoesNotExist.jar", это выдаст мне ту же ошибку. Но я действительно не знаю, что туда поставить, чтобы это работало.

Есть идеи о том, что я могу делать неправильно?

Спасибо и всего наилучшего,

Жуан Майя

Ответы [ 3 ]

4 голосов
/ 12 декабря 2011

Ваш дескриптор кажется правильным, поэтому попробуйте следующее.

Сначала убедитесь, что браузер может загрузить банку. Введите прямой URL-адрес файла JAR в браузере. Например, если ваш html можно открыть, набрав

http://localhost/myapp/mypage.html

тип

http://localhost/myapp/UCFApplet.jar

Если вы можете скачать банку, и она идентична вашей банке, продолжайте.

Проверьте саму банку. Введите в командной строке

jar vft UCFApplet.jar

и посмотрите вывод. Вы должны быть в состоянии найти свой класс:

/com/fujitsu/test/applet/UCFApplet.class

Кстати, знаете ли вы, что тег апплета устарел и не поддерживается Opera и Chrome? Для поддержки всех браузеров вы должны использовать тег object

3 голосов
/ 21 ноября 2013

Попробуйте включить трассировку на панели управления Java.Затем он создаст файл журнала по следующему пути, который может помочь:

%USERPROFILE%\AppData\LocalLow\sun\java\Deployment\log

В моем случае у меня была ошибка, которая появлялась только при включении трассировки и которая представлялась просто как «ClassNotFoundException»:

java.util.zip.ZipException: duplicate entry: META-INF/LICENSE.txt

Загрузчик апплета отклонил файл jar, поскольку в файле zip была повторяющаяся запись.Странно appletviewer.exe смог загрузить и запустить эту банку нормально.

0 голосов
/ 24 января 2017

Для тех из вас, кто работает за корпоративным прокси. В соответствии с Oracle ClassNotFoundException это "распространенная ошибка, которая появляется, если настройки прокси не верны" .

proxy setting for Java

См .: Как настроить параметры прокси для Java?

...