Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ClassNotFoundException oracle.jdbc.driver.OracleDriver仅在servlet中使用Eclipse_Java_Eclipse_Servlets_Classnotfoundexception - Fatal编程技术网

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

Java ClassNotFoundException oracle.jdbc.driver.OracleDriver仅在servlet中使用Eclipse,java,eclipse,servlets,classnotfoundexception,Java,Eclipse,Servlets,Classnotfoundexception,以下代码在线路上失败: Class.forName("oracle.jdbc.driver.OracleDriver"); 错误如下: java.lang.ClassNotFoundException:oracle.jdbc.driver.OracleDriver 两个printlns打印: Wed_Jun_22_11:18:51_PDT_2005 false 这让我觉得这个类存在并且可以找到。同样,这个类也适用于非servlet应用程序 我已经多次重新启动了所有东西,并多次重新生成应用程序

以下代码在线路上失败:

Class.forName("oracle.jdbc.driver.OracleDriver");
错误如下:

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

两个
println
s打印:

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

}
我正在使用:

  • EclipseJavaEE1.4.2
  • 雄猫7
  • jdk1.7
  • 甲骨文11g R2
  • Windows 7 64位

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

您有几个选择:

  • 您可以将驱动程序JAR放在
    WEB-INF/lib
    文件夹中
  • 您可以将其与应用程序一起导出。->右键单击Project->
    生成路径
    ->
    配置生成路径…
    ->
    订购并导出
    ->检查驱动程序
  • 将驱动程序JAR放在应用程序服务器的共享或库扩展文件夹中。(不过,您应该选择选项一或选项二。)

尝试此操作,将
oracle.jdbc.driver.OracleTypes
更改为
oracle.jdbc.OracleTypes
您必须在项目的部署程序集中包含ojdbc6.jar文件

  • 选择包含jsp文件的web项目

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

  • 在下拉菜单中选择属性

  • 选择展开组件

  • 在其中添加ojdbc6.jar文件


  • 您确定您的oracle-xx.jar位于web应用程序的/web-INF/lib目录或${tomcat.install.dir}/lib目录中吗?类路径中似乎缺少oracle驱动程序jar。将ojdbc14.jar文件放在WEB-INF/lib文件夹中修复了该问题!我仍然不明白为什么oracle.jdbc.driver.OracleDriver.BUILD_日期有效,但在下一行中没有找到该类。谢谢我想我明白了为什么一个对OracleDriver的调用有效而另一个无效。第一个调用被编译到应用程序中,并且ojdbc14.jar位于构建路径中,因此它可以工作。第二个调用是在运行时进行的,因此当java运行时,它需要位于路径中。