необученное исключение: java.lang.ClassNotFoundException: - PullRequest
2 голосов
/ 17 марта 2011

это сервер Windows, работающий под управлением Apache и Tomcat.Я добавил новый класс в существующий пакет и попытался ссылаться на него со страницы jsp следующим образом:

jsp:useBean id="promotion" class="MY.NEWCLASS" scope="session" 

Я что-то упустил?Нужно ли делать что-то особенное, чтобы добавить класс в пакет?Заранее спасибо.

страница jsp загружается нормально, но когда я пытаюсь нажать на кнопку, которая использует этот класс, я получаю необнаруженное исключение: java.lang.ClassNotFoundException:MY.NEWCLASS

Ответы [ 2 ]

3 голосов
/ 17 марта 2011

Необходимо убедиться, что файл класса присутствует в /WEB-INF/classes/MY/NEWCLASS.class развернутого веб-приложения.Или, если он находится в папке /MY/NEWCLASS.class внутри JAR-файла с именем filename.jar, вам необходимо убедиться, что он присутствует в /WEB-INF/lib/filename.jar развернутого веб-приложения.

Обратите внимание, что полное имяимя чувствительно к регистру.Таким образом, имя должно быть точным соответствием.Возможно, вы были небрежны с примером кода в своем вопросе, но использование заглавных букв таким образом не является нормальным соглашением об именах .Существует вероятность, что это на самом деле называется my.NewClass например.Затем вы должны заявить об этом в своем jsp:useBean.

1 голос
/ 17 марта 2011

Похоже, вы забыли развернуть новый класс на сервере. Как вы можете отладить это?

Сначала вы можете проверить путь к классу. В месте, где вы получите исключение, получите текущий загрузчик классов:

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();
}

Теперь вы можете проверить, что вывод содержит то, что вы ожидаете.

...