#java #html #applet #localhost
#java #HTML #апплет #localhost
Вопрос:
Каталог выглядит так:
test.html
blah
hmmm
Внутри «blah» у нас есть все файлы апплета, включая blahBlah.class . Внутри «хммм» находятся еще несколько файлов классов, которые были взяты из библиотеки или чего-то еще, они также используются проектом.
Я пишу в test.html …
<applet name="blah" code="/blahBlah.class" codebase="blah"></applet>
(наряду со всеми другими вариантами, о которых я мог подумать)
Самое большее, что я получил, это:
java.lang.NoClassDefFoundError: blahBlah (wrong name: blah/blahBlah)
Теперь внутри blahBlah.java у нас есть:
package blah;
Я не уверен, связано ли это.
Также интересно, может быть, необходимо поместить проект в файл jar и установить атрибут archive апплета?
Настоящие файлы — это не бла-бла-бла, но я точно заменил имена.
Комментарии:
1. @Downvoter: незнание апплетов не является веской причиной для понижения. Это совершенно ясный и обоснованный вопрос.
Ответ №1:
java.lang.Ошибка NoClassDefFoundError: Бла-бла-бла (неправильное название: бла-бла-бла)
По сути, это означает, что он был выполнен как
java blahBlah
вместо
java blah.blahBlah
Другими словами, ваш code
атрибут неверен. Это должно быть
<applet name="blah" code="blah/blahBlah.class" />
или просто с помощью FQN (см. Также комментарий Эндрю)
<applet name="blah" code="blah.blahBlah" />
codebase
По умолчанию используется текущая папка, что в данном случае нормально, поэтому она удалена. Альтернативой является помещение его в другую папку, например /applet
или что-то в этом роде. Вы должны, по крайней мере, использовать не папку пакета в качестве базы кода, а вместо этого корневой каталог пакета.
Комментарии:
1. Огромное спасибо. Это работает, и, более того, он работает для его обслуживания через сервер, что было моим первоначальным намерением.
2.
blah/blahBlah.class
может допускаться, ноblah.blahBlah
(полное имя) указано правильно.3. @Andrew: AFAIK, это работает, только если оно поставляется из JAR-архива. У OP есть класс plain в общественном достоянии. Тогда вам действительно нужно будет указать URI в
code
. Если бы он был упакован в JAR, то<applet archive="Blah.jar" code="blah.blahBlah">
это действительно единственный способ.4. «это работает, только если оно поставляется из JAR-архива». Быстрый тест показывает, что он работает без Jar. Я был бы рад доказать это вам по отдельному вопросу, но если вы поверите мне на слово и отредактируете ответ, я просто проголосую «за» и оставлю все как есть. Меня беспокоит, что кто-то столь же полезный, как вы, советует использовать эту устаревшую форму атрибута code, повторяющуюся во многих элементах апплета, которые можно увидеть в руководствах Sun (я полагаю, что именно здесь возникает это заблуждение).
5. @Andrew: справедливое замечание. Прошло довольно много времени с тех пор, как я в последний раз возился с апплетом 🙂