Java-апплет ClassNotFoundException с кодовой базой

Я начинаю работать над апплетом, который заменит существующий. Никогда раньше не разрабатывавший апплет, я решил начать с популярного примера HelloWorld. Я могу запустить его несколькими способами: в средстве просмотра апплетов, а также в браузере, если я помещу файл JAR, содержащий класс HelloWorld, в тот же каталог, что и HTML (т.е. http://localhost:8080/myApp). Я также заставил его работать, когда поместил JAR в каталог с именем HelloWorld чуть ниже каталога myApp и указал параметр codebase в теге <applet> как HelloWorld. Но когда я пытаюсь указать WEB-INF каталогов, таких как classes или lib, я получаю ClassNotFoundException. Что я делаю неправильно?


person Sheldon R.    schedule 26.04.2016    source источник
comment
1) Зачем кодировать апплет? Если это произошло по указанию учителя, отправьте его на Почему учителя компьютерных наук должны прекратить преподавать Java-апплеты. 2) См. Поддержка плагина Java устарела и Переход на сайт без плагинов.   -  person Andrew Thompson    schedule 27.04.2016
comment
Я бы хотел, чтобы это было для классного задания :) Это для устаревшего приложения...   -  person Sheldon R.    schedule 27.04.2016
comment
... но я рассмотрю возможность использования вместо этого Java Web Start (я буду использовать много стороннего коммерческого программного обеспечения, поэтому мне нужно посмотреть, что возможно)   -  person Sheldon R.    schedule 27.04.2016


Ответы (1)


Но когда я пытаюсь указать WEB-INF каталоги, такие как classes или lib, я получаю ClassNotFoundException. Что я делаю неправильно?

Эти каталоги предназначены только для классов/jar, которые используются в JSP и сервлетах (т.е. для всего, что нужно серверу). Ресурсы внутри них доступны посетителям сайта. В этом смысле «посетитель» означает пользовательский агент (т. е. браузер) или подключаемый модуль на стороне клиента (например, Flash или JRE).

Вы можете убедиться в этом сами, вставив полный URL-адрес Jar в адресную строку веб-браузера и нажав «Ввод», чтобы перейти к нему в браузере. Сервер вернет сообщение об эффекте «запрещено».

См. также информацию WEB-INF. страница, которая расширяется:

WEB-INF — это имя папки в веб-приложениях Java. Он используется для хранения информации о развертывании, такой как файл web.xml, необходимые файлы библиотек и файлы скомпилированных классов. Обычно он недоступен из Интернета. Любые файлы, которые вы хотите поставить на войну, но не хотите публиковать, тогда web-inf — это место, где вы можете хранить эти файлы.

person Andrew Thompson    schedule 27.04.2016
comment
Спасибо, Эндрю. Я просматривал другие вопросы SO по этому вопросу и увидел, что дерево папок WEB-INF закрыто для апплетов. Но я предполагаю, что это было не всегда так, поскольку первые ответы на вопросы по этому вопросу, которые я видел, конкретно говорили о том, чтобы поместить банку апплета в «классы» или «библиотеку». - person Sheldon R.; 27.04.2016