无法在简单的java类中加载OracleDriver类

时间:2013-02-08 10:45:47

标签: jdbc java

// DbConnector.java

import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;

public class DbConnector {

    public static void main(String[] argv) {

        System.out.println("-------- Oracle JDBC Connection Testing ------");

        try {

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

        } catch (ClassNotFoundException e) {

            System.out.println("Where is your Oracle JDBC Driver?");
            e.printStackTrace();
            return;

        }

        System.out.println("Oracle JDBC Driver Registered!");

        Connection connection = null;

        try {

            connection = DriverManager.getConnection(
                    "jdbc:oracle:thin:@172.17.119.108:1526:GESSDEV", "username",
                    "password");

        } catch (SQLException e) {

            System.out.println("Connection Failed! Check output console");
            e.printStackTrace();
            return;

        }

        if (connection != null) {
            System.out.println("You made it, take control your database now!");
        } else {
            System.out.println("Failed to make connection!");
        }
    }

}

我有一个名为odbc14.jar的

的jdbc jar

javac -classpath odbc14.jar; DbConnector.java

编译成功

java -classpath odbc14.jar; DbConnector

输出:: -------- Oracle JDBC连接测试------ 您的Oracle JDBC驱动程序在哪里?

java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:164)
        at DbConnector.main(DbConnector.java:13)

请帮我解决这个问题

我已经解决了上述问题。现在我开始了新的例外

-------- Oracle JDBC连接测试------ Oracle JDBC驱动程序已注册! 连接失败!检查输出控制台

java.sql.SQLException: Io exception: The Network Adapter could not establish the connection
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
        at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
        at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:420)
        at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
        at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
        at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
        at java.sql.DriverManager.getConnection(DriverManager.java:525)

5 个答案:

答案 0 :(得分:5)

JDBC一起使用的ojdbc14.jar驱动程序为oracle.jdbc.OracleDriver

请参阅:Loading JDBC Driver Class - ojdbc14.jar

答案 1 :(得分:1)

将odbc14.jar这个JAR放在所需的JRE路径中,如“C:\ Program Files \ Java \ jdk1.7.0_65 \ jre \ lib \ ext”。

这可以解决您的问题。

答案 2 :(得分:0)

ojdbc14.jar放入<jdk_home>\jre\lib\ext并将ADD放入CLASSPATH变量中,然后在编译或运行时不必指定类路径 如果您使用的是java6,则oracle.jdbc.driver.OracleDriver可以,但不推荐使用。所以最好使用oracle.jdbc.OracleDriver

答案 3 :(得分:0)

你应该

 try {

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

        }

并将odbc14.jar放在类路径中(如果尚未完成)

答案 4 :(得分:0)

只需要将appsclassloader放入您的类路径中。我不确定,为什么我们需要放入jre / lib / ext