8

以下のコードは次の行で失敗します。

Class.forName("oracle.jdbc.driver.OracleDriver");

エラーで:

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

2 つprintlnの s は次のように表示されます。

Wed_Jun_22_11:18:51_PDT_2005
false

これにより、クラスが存在し、見つけることができると思います。また、これとまったく同じクラスが非サーブレット アプリケーションでも機能します。

すべてを複数回再起動し、アプリケーション/サーブレットを複数回再生成しました。シンプルで短くするために、すべての値がハードコードされています。

private static Connection getDBConnection() throws Exception {
    System.out.println(oracle.jdbc.driver.OracleDriver.BUILD_DATE);
    System.out.println(Class.class.desiredAssertionStatus());
    //load the driver
    Class.forName("oracle.jdbc.driver.OracleDriver");

    return DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "SYSTEM", "pass");
}

失敗する完全なサーブレット:

package servletClass_3;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class OneMoreBookStore
 */
@WebServlet("/OneMoreBookStore")
public class OneMoreBookStore extends HttpServlet {

    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    private static Connection getDBConnection() throws Exception {

        System.out.println(oracle.jdbc.driver.OracleDriver.BUILD_DATE);
        System.out.println(Class.class.desiredAssertionStatus());

        //load the driver
        Class.forName("oracle.jdbc.driver.OracleDriver");
        return DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "SYSTEM", "pass");
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try
        {
            Connection con = getDBConnection();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }

}

このアプリケーションは動作します:

package servletClass_3;

import java.sql.Connection;
import java.sql.DriverManager;

public class DBConnect {

    private static Connection getDBConnection() throws Exception {
        System.out.println(oracle.jdbc.driver.OracleDriver.BUILD_DATE);
        System.out.println(Class.class.desiredAssertionStatus());

        //load the driver
        Class.forName("oracle.jdbc.driver.OracleDriver");
        return DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "SYSTEM", "pass");
    }
    public static void main(String[] args) {
        try
        {
            Connection con = getDBConnection();
            System.out.println("connection worked");
            con.close();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }

}

私は使用しています:

  • エクリプス JavaEE 1.4.2
  • トムキャット7
  • jdk1.7
  • オラクル 11g R2
  • ウィンドウズ7 64ビット
4

3 に答える 3

12

おそらく、アプリケーションで oracle ドライバーをデプロイしていません。

いくつかのオプションがあります:

  • ドライバーjarをWEB-INF/libフォルダーに配置できます
  • アプリケーションでエクスポートします。-> プロジェクトを右クリック -> Build Path-> Configure Build Path...-> Order and Export-> ドライバーを確認します。
  • アプリケーション サーバーの共有またはライブラリ拡張フォルダーにドライバー jar を配置します。(ただし、オプション1または2を使用する必要があります。)
于 2012-06-14T21:48:17.190 に答える
9

プロジェクトの配置アセンブリに ojdbc6.jar ファイルを含める必要があります...

  1. jsp ファイルを含む Web プロジェクトを選択します...

  2. Eclipse のメニュー バーで[プロジェクト] タブを選択します。

  3. ドロップダウン メニューでプロパティを選択します

  4. 展開アセンブリを選択

  5. そこに ojdbc6.jar ファイルを追加します。

于 2013-07-20T09:50:49.673 に答える
0

これを試してoracle.jdbc.driver.OracleTypesoracle.jdbc.OracleTypes

于 2013-05-15T18:36:20.583 に答える