2012-01-20 27 views
1

JSFでbacnet4jを使用しようとしています。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の/WEB-INF/libフォルダに格納されています。

プレーンJavaアプリケーションは、Java Webアプリケーションと同じクラスパスを使用しません。通常のJavaアプリケーションの場合、クラスパスは通常、javaコマンドの-cpまたは-classpath引数で指定されます。指定されていない場合は、%CLASSPATH%環境変数によって、またはJARの場合はClass-PathのJARの/META-INF/MANIFEST.MFエントリです。 Java Webアプリケーションの場合、クラスパスは、デフォルトでwebappの/WEB-INF/lib/WEB-INF/classesフォルダとサーバの/lib(以上)フォルダと、サーバ固有の設定で指定できるカスタムフォルダ(例えば、shared.loaderプロパティは/conf/catalina.propertiesの場合)をカバーします。

+0

それは動作します! なぜこのことが起こるのですか? (あなたは素晴らしい男です=)] –

+0

これは単なる仕様です。 – BalusC

0

NoClassDefFoundは、クラスがコンパイル時に使用可能であったが、実行時には使用できなかったことを意味します。適切なクラスを持つjarファイルをwarに追加するか、アプリケーションサーバのクラスパスに追加する必要があります。

関連する問題