0

以下のコードを実行すると:

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

    try {
        Class.forName("oracle.jdbc.driver.OracleDriver");
    } catch (Exception e) {
        e.printStackTrace();
    }
}

私は例外を取得しています:

java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver

Tomcat jar と ojdbc14.jar はすべてインポート済みです。

奇妙なことに、main() の別のクラスに同じコードを書くと、うまくいきます。

public static void main(String[] args) {
    try {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        System.out.println("works");
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
}
4

4 に答える 4

1

ojdbc14.jar を正しい場所に配置しなかったようです。これは、他のプロジェクト固有の jar がある Web-INF/lib フォルダーに存在する必要があります。デバッグ目的でクラスをインポートしてみてください。以下のステートメントが正しく解釈されていることを確認してください。

OracleDriver od=   new OracleDriver();
于 2013-07-26T05:55:17.473 に答える
1

いくつかのオプションがあるかもしれません

オプション:

  1. 必ずディレクトリojdbcxx.jarの下にファイルを配置してくださいWEB-INF/lib
  2. ojdbcxx.jarの下に置き<tomcat home dir>/common/libます。
于 2013-07-26T06:03:01.647 に答える
1

servlet早期初期化に設定されていると思います。ojdbc14.jartomcatlibディレクトリに置くかservlet、遅延初期化に設定します。

于 2013-07-26T06:22:04.210 に答える
1

main() と doPost の呼び出しメカニズムを理解する必要があります。

主要()

Java ツールは、Java アプリケーションを起動します。これは、Java ランタイム環境を開始し、指定されたクラスをロードし、そのクラスのメイン メソッドを呼び出すことによって行われます。

このビルド パスは Java コードがある場所なので、ここに lib が存在する必要があります。

doPost()

サーバーによって呼び出されます。

その構造は

          App Name  
              -WEB-INF
                   -classes (all class file)
                   -lib (all jars) 
              -META-INF

ここで、配置する必要があるjarはlibフォルダーにあります。

于 2013-07-26T06:13:07.427 に答える