ClassNotFoundException oracle.jdbc.driver.OracleDriver仅在servlet中使用Eclipse [英] ClassNotFoundException oracle.jdbc.driver.OracleDriver only in servlet, using Eclipse
问题描述
以下代码失败:
Class.forName("oracle.jdbc.driver.OracleDriver");
与错误:
java.lang.ClassNotFoundException:oracle.jdbc.driver.OracleDriver
java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
两个 println
s print:
The two println
s print:
Wed_Jun_22_11:18:51_PDT_2005
false
这使我觉得该类存在,可以找到。此外,这个完全相同的类也可以在非servlet应用程序中使用。
This makes me think the class exists and can be found. Also this exact same class works in an a non-servlet application.
我已经重新启动了一次,重新启动了应用程序/ servlet多次。所有的值都被硬编码,使其简单而简短。
I have rebooted everything multiple times and regenerated the application/servlet multiple times. All values have been hard coded to make it simple and short.
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:
full servlet that fails:
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();
}
}
}
m使用:
- Eclipse JavaEE 1.4.2
- Tomcat 7
- jdk1.7
- Oracle 11g R2
- Windows 7 64bit
- Eclipse JavaEE 1.4.2
- Tomcat 7
- jdk1.7
- Oracle 11g R2
- Windows 7 64bit
推荐答案
可能您没有在应用程序中部署oracle驱动程序。
Probably you aren't deploying the oracle driver with your application.
您有几个选项:
- 您可以将驱动程序jar放在您的
WEB-INF / lib
文件夹中 - 将其与应用程序一起导出。 - >右键单击项目 - >
构建路径
- >配置构建路径...
- >订单和导出
- >检查驱动程序。 - 将驱动程序jar放在应用程序服务器的共享或库扩展文件夹中。 (你应该选择一个或两个,但是。)
- You can place the driver jars in your
WEB-INF/lib
folder - You export it with your application. -> Right Click on Project ->
Build Path
->Configure Build Path...
->Order and Export
-> Check the drivers. - Place the driver jars in a shared or library extension folder of your application server. (You should go with option one or two though.)
这篇关于ClassNotFoundException oracle.jdbc.driver.OracleDriver仅在servlet中使用Eclipse的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!