web-dev-qa-db-ja.com

ClassNotFoundException Oracle.jdbc.driver.OracleDriverはEclipseを使用したサーブレットでのみ

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

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

エラーで:

Java.lang.ClassNotFoundException:Oracle.jdbc.driver.OracleDriver

2つのprintlnsの出力:

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

}

私が使用しています:

  • Eclipse JavaEE 1.4.2
  • Tomcat 7
  • jdk1.7
  • Oracle 11g R2
  • Windows 7 64ビット
8
Geoff

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

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

  • ドライバーjarをWEB-INF/libフォルダ
  • アプリケーションと一緒にエクスポートします。 ->プロジェクトを右クリック-> Build Path-> Configure Build Path...-> Order and Export->ドライバを確認します。
  • アプリケーションサーバーの共有またはライブラリ拡張フォルダーにドライバーjarを配置します。 (ただし、オプション1または2を使用する必要があります。)
12
Udo Held

プロジェクトのDeployment Assemblyにojdbc6.jarファイルを含める必要があります...

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

  2. eclipseのメニューバーでProjectタブを選択します。

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

  4. 選択展開アセンブリ

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

9
sri

これを試して、Oracle.jdbc.driver.OracleTypesOracle.jdbc.OracleTypes

0
user1250206