0

Moという名前のクラスがあります。Moには次のような静的関数があります。

public static void logsomething(String s) 

logsomethingの本体はlog4j(jar)を使用します。問題ない。

Main関数もあります:

public static void main(String[] args) {
        // TODO Auto-generated method stub
            Mo.logsomething("sth");
    }

私はメインでMo.logsomething()を呼び出しました。大丈夫です。エラーはありません。

しかし、サーブレットdoGetでこれをMo.logsomething( "sth")と呼びます。

protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {

            Mo.logsomething("sss");

        response.getWriter().println("<h1>hello</h1>");
    }

例外を取得します:java.lang.NoClassDefFoundError:org / apache / log4j / Layout

だからそれは奇妙です。何が起こったのかを確認するためにデバッグを試みます。デバッグカーソルが次の行にある場合:Mo.logsomething( "sss"); F5キーを押してコードをステップインします。しかし、エラーが発生します:ソースが見つかりません。

私がどうかしましたか、まずいことでもありましたか?

4

1 に答える 1

1

使用するアプリケーションサーバーを書いているわけではありません。しかし、エラーはクラスパス エラーである可能性があります。

Log4J問題は、アプリケーション サーバーがライブラリを見つけられなかったことです。

通常、この問題は、Log4Jjar ファイルをWEB-INF/lib/Web アプリケーションのディレクトリに置き、そのアプリケーションを再度デプロイすることで解決できます。

于 2013-01-30T07:06:05.387 に答える