ClassNotFoundException oracle.jdbc.driver.OracleDriver仅在servlet中使用Eclipse

下面的代码失败了:

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

有错误:

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

两个println的打印:

 Wed_Jun_22_11:18:51_PDT_2005 false 

这让我觉得这个类存在并且可以找到。 此完全相同的类也适用于非servlet应用程序。

我已多次重启所有内容并多次重新生成应用程序/ servlet。 所有值都经过硬编码,使其简单易行。

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

失败的完整servlet:

 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
  • 雄猫7
  • jdk1.7
  • Oracle 11g R2
  • Windows 7 64位

可能您没有在应用程序中部署oracle驱动程序。

你有几个选择:

  • 您可以将驱动程序jar放在WEB-INF/lib文件夹中
  • 您可以随应用程序一起导出它。 – >右键单击项目 – > Build Path – > Configure Build Path... – > Order and Export – >检查驱动程序。
  • 将驱动程序jar放在应用程序服务器的共享或库扩展文件夹中。 (你应该选择一两个选项。)

您必须在项目的部署程序集中包含ojdbc6.jar文件…

  1. 选择包含jsp文件的Web项目…

  2. 在Eclipse的菜单栏中选择Project选项卡

  3. 在下拉菜单中选择属性

  4. 选择部署程序集

  5. 在其中添加ojdbc6.jar文件。

试试这个,将oracle.jdbc.driver.OracleTypes更改为oracle.jdbc.OracleTypes