2012-01-20 2 views
1

Я пытаюсь использовать bacnet4j с JSF.Класс, найденный в приложении Java, но не в 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 не работает, верно?

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

+1

Что вы подразумеваете под «Я уверен, что класс есть»? Вы уверены, что это в вашем классе веб-приложений? – Svilen

ответ

2

Файл JAR, содержащий этот класс, должен находиться в папкеwebapp.

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

+0

Он работает! Почему это происходит в Бауке? (вы удивительный чувак =]) –

+0

Это просто по спецификации. – BalusC

0

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

Смежные вопросы