0

在执行以下代码时:

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 jar 和 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

4 回答 4

1

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

OracleDriver od=   new OracleDriver();
于 2013-07-26T05:55:17.473 回答
1

可能有几种选择

选项 :

  1. 确保将ojdbcxx.jar文件放在WEB-INF/lib目录下。
  2. 放在. ojdbcxx.jar_<tomcat home dir>/common/lib
于 2013-07-26T06:03:01.647 回答
1

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

主要的()

java 工具启动 Java 应用程序。它通过启动 Java 运行时环境、加载指定的类并调用该类的 main 方法来做到这一点。

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

做邮政()

它由服务器调用。

它的结构是

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

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

于 2013-07-26T06:13:07.427 回答
1

我猜servlet是设置为早期初始化。放入ojdbc14.jartomcatlib目录或设置servlet为惰性初始化。

于 2013-07-26T06:22:04.210 回答