Uncauch исключение: java.lang.classnotfoundexception:
-
27-10-2019 - |
Вопрос
Это сервер Windows, работающий Apache и Tomcat. Я добавил новый класс в существующий пакет и попытался ссылаться на его со страницы JSP, как это:
jsp:useBean id="promotion" class="MY.NEWCLASS" scope="session"
я что-то упускаю? Нужно ли сделать что -нибудь особенное, чтобы добавить класс в упаковку? Заранее спасибо.
Страница JSP загружается нормально, но когда я пытаюсь нажать на кнопку, которая использует этот класс, я получаю исключение Uncaught: java.lang.ClassNotFoundException:MY.NEWCLASS
Решение
Вы должны убедиться, что файл класса присутствует в /WEB-INF/classes/MY/NEWCLASS.class
развернутого веб -привязки. Или когда это в папке /MY/NEWCLASS.class
Внутри файла JAR с именем filename.jar
, тогда вам нужно убедиться, что он присутствует в /WEB-INF/lib/filename.jar
развернутого веб -привязки.
Обратите внимание, что полностью квалифицированное имя чувствительно к корпусу. Таким образом, имя должно быть точным совпадением. Может быть, вы были небрежны с примером кода в своем вопросе, но использование столиц таким образом не является нормальным соглашение об именовании. Анкет Есть вероятность, что это фактически называется my.NewClass
Например. Затем вы должны объявить как таковые в своем jsp:useBean
.
Другие советы
Похоже, вы забыли развернуть новый класс на сервере. Как вы можете отладить это?
Во -первых, вы можете проверить дорожку класса. В том месте, где вы получаете исключение, получите текущий загрузчик класса:
ClassLoader cl = getClass().getClassLoader();
Если это Urlclassloader, Спросите это URL:
while( cl != null ) {
if( cl instanceof URLClassLoader ) {
URL[] urls = ((URLClassLoader)cl).getURLs()
for( URL url : urls ) System.out.println(url);
}
cl = cl.getParent();
}
Теперь вы можете проверить, что вывод содержит то, что вы ожидаете.