获取ClassNotFoundException:oracle.jdbc.driver.OracleDriver在一个但不在另一个类中

时间:2013-07-26 05:47:45

标签: java java-ee servlets

执行以下代码:

protected void doPost(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {

    try {
        Class.forName("oracle.jdbc.driver.OracleDriver");
    } catch (Exception e) {
        e.printStackTrace();
    }
}

我得到例外:

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

我已经进口了所有的tomcat jars& ojdbc14.jar的。

奇怪的是当我在main()中的一个单独的类中编写相同的代码时,它可以工作:

public static void main(String[] args) {
    try {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        System.out.println("works");
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
}

4 个答案:

答案 0 :(得分:1)

看起来你没有把ojdbc14.jar放在正确的位置。它应该驻留在其他项目特定jar所在的Web-INF / lib文件夹中。出于调试目的,尝试导入类并查看以下语句是否正确解释

OracleDriver od=   new OracleDriver();

答案 1 :(得分:1)

可能有几个选项

选项:

  1. 确保将ojdbcxx.jar文件放在WEB-INF/lib目录下。
  2. ojdbcxx.jar置于<tomcat home dir>/common/lib

答案 2 :(得分:1)

您需要了解main()和doPost的调用机制。

main()的

java工具启动Java应用程序。它通过启动Java运行时环境,加载指定的类以及调用该类的main方法来实现此目的。

这是您拥有Java代码的构建路径,因此lib应该存在于此处。

的doPost()

由服务器调用。

它的结构是

          App Name  
              -WEB-INF
                   -classes (all class file)
                   -lib (all jars) 
              -META-INF

所以在这里,你需要放置的jar是在lib文件夹中。

答案 3 :(得分:1)

我猜servlet设置为早期初始化。将ojdbc14.jar放在tomcat lib目录中或将servlet设置为延迟初始化。