Класс найден в приложении Java, но не в JSF? - PullRequest
1 голос
/ 20 января 2012

Я пытаюсь использовать bacnet4j с JSF.

Я создаю приложение в .java, которое включает / выключает лампу, но если я пытаюсь вызвать тот же метод со страницы JSF (которая сообщаетс моим управляющим компонентом), дает мне:

type Exception report

message

descriptionThe server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: com/serotonin/bacnet4j/type/Encodable
root cause

java.lang.NoClassDefFoundError: com/serotonin/bacnet4j/type/Encodable
root cause

java.lang.ClassNotFoundException: com.serotonin.bacnet4j.type.Encodable

Но я почти уверен, что класс есть, потому что если не мое java-приложение не работает, верно?

ЛюбойИдея, почему это происходит?

Ответы [ 2 ]

2 голосов
/ 20 января 2012

Файл JAR, содержащий этот класс, должен находиться в папке /WEB-INF/lib веб-приложения.

Простое приложение Java не использует тот же путь к классу, что и веб-приложение Java.Для простого Java-приложения classpath обычно задается аргументом -cp или -classpath в команде java, или, если не указан, переменной %CLASSPATH% или, если это JAR, записью Class-Path в JAR1009 *.Для веб-приложения Java класс-путь по умолчанию охватывает папку /WEB-INF/lib и /WEB-INF/classes веб-приложения и папки /lib (и более) сервера и любые пользовательские папки, которые можно указать в конфигурации конкретного сервера, например свойство shared.loader/conf/catalina.properties в случае Tomcat.

0 голосов
/ 20 января 2012

NoClassDefFound означает, что класс был доступен при компиляции, но не во время выполнения. Вам нужно добавить jar-файл с соответствующим классом в вашу войну (или добавить его в путь к классам сервера приложений)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...