2

これは、ApacheとTomcatを実行しているWindowsサーバーです。既存のパッケージに新しいクラスを追加し、次のようなjspページから参照しようとしました。

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

私は何かが足りないのですか?パッケージにクラスを追加するために何か特別なことをする必要がありますか?前もって感謝します。

jspページは正常に読み込まれますが、このクラスを使用するボタンをクリックしようとすると、キャッチされない例外が発生します。java.lang.ClassNotFoundException:MY.NEWCLASS

4

2 に答える 2

3

/WEB-INF/classes/MY/NEWCLASS.classデプロイされたWebアプリケーションにクラスファイルが存在することを確認する必要があります。または/MY/NEWCLASS.class、名前がJARファイル内のフォルダーにある場合は、デプロイされたWebアプリケーションfilename.jarに存在することを確認する必要があります。/WEB-INF/lib/filename.jar

完全修飾名では大文字と小文字が区別されることに注意してください。したがって、名前は完全に一致する必要があります。質問のコード例に不注意だったかもしれませんが、このように大文字を使用することは、通常の命名規則ではありません。たとえば、実際に呼び出される可能性があります。my.NewClass次に、でそのように宣言する必要がありますjsp:useBean

于 2011-03-17T14:45:45.417 に答える
1

これは、新しいクラスをサーバーにデプロイするのを忘れているようです。これをどのようにデバッグできますか?

まず、クラスパスを調べることができます。例外が発生した場所で、現在のクラスローダーを取得します。

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

これで、出力に期待どおりのものが含まれていることを確認できます。

于 2011-03-17T14:46:57.590 に答える