以下のコードは行で失敗します:
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();
}
}
}
私が使用しています:
おそらく、アプリケーションにOracleドライバーをデプロイしていません。
いくつかのオプションがあります。
WEB-INF/lib
フォルダBuild Path
-> Configure Build Path...
-> Order and Export
->ドライバを確認します。プロジェクトのDeployment Assemblyにojdbc6.jarファイルを含める必要があります...
jspファイルを含むWebプロジェクトを選択...
eclipseのメニューバーでProjectタブを選択します。
ドロップダウンメニューでpropertiesを選択します
選択展開アセンブリ
その中にojdbc6.jarファイルを追加します。
これを試して、Oracle.jdbc.driver.OracleTypes
〜Oracle.jdbc.OracleTypes