oracle 获取类未找到异常

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/3431092/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-18 21:11:59  来源:igfitidea点击:

getting class not found exception

javaoraclejdbc

提问by user262577

Hi friends i am facing the following error while trying to connect to a database through java code:

嗨,朋友们,我在尝试通过 Java 代码连接到数据库时遇到以下错误:

Exception in thread "Main Thread" java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at com.example.model.Driver.main(Driver.java:13)

My java code is:

我的Java代码是:

package com.example.model;

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

public class Driver {
    public static void main(String args[]) throws ClassNotFoundException,
    SQLException {

        Class.forName("oracle.jdbc.OracleDriver");
        // or you can use:
        // DriverManager.registerDriver(
        // new oracle.jdbc.driver.OracleDriver());
        Connection conn = DriverManager.getConnection(
        "jdbc:oracle:thin:@127.0.0.1:1521:ORCL", "scott", "tiger");

        Statement stmt = conn.createStatement();
        ResultSet rset = stmt.executeQuery("select * from customer");
        while (rset.next())
            System.out.println(rset.getString(1));
        rset.close();
        stmt.close();
        conn.close();
    }
}

As per i came to know it could be due to class path issue but don't know how to resolve it. I set my class path to

据我所知,这可能是由于类路径问题,但不知道如何解决。我将课程路径设置为

C:\bea\user_project\workspace\wlserver_10.3\server\ext\jdbc\oracleg\ojdbc5.jar;

I am using weblogic 10.3 workspace and weblogic 10.3 server.

我正在使用 weblogic 10.3 工作区和 weblogic 10.3 服务器。

回答by Pascal Thivent

The java.lang.ClassNotFoundException: oracle.jdbc.OracleDriverdefinitely means that the mentioned class is not on the class path. And because ojdbc5.jarhas it, the whole question is: "how did you set your classpath"?

java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver一定意味着所提到的类不是在类路径上。因为ojdbc5.jar有了它,整个问题是:“你是如何设置你的类路径的”?

Here is what I get on my machine using your code (using the default package):

这是我使用您的代码(使用默认包)在我的机器上得到的:

$ cat > Driver.java
...
$ javac Driver.java
$ java -cp /home/pascal/opt/Oracle/Middleware/wlserver_10.3/server/ext/jdbc/oracle/11g/ojdbc5.jar:. Driver 
Exception in thread "main" java.sql.SQLException: The Network Adapter could not establish the connection
    at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
    at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:131)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:197)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:525)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:413)
    at oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:508)
    at oracle.jdbc.driver.T4CConnection.(T4CConnection.java:203)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:33)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:510)
    at java.sql.DriverManager.getConnection(DriverManager.java:582)
    at java.sql.DriverManager.getConnection(DriverManager.java:185)
    at Driver.main(Driver.java:15)
Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connection
    at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:328)
    at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:421)
    at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:634)
    at oracle.net.ns.NSProtocol.connect(NSProtocol.java:208)
    at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:966)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:292)
    ... 7 more
Caused by: java.net.ConnectException: Connection refused
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
    at java.net.Socket.connect(Socket.java:529)
    at java.net.Socket.connect(Socket.java:478)
    at java.net.Socket.(Socket.java:375)
    at java.net.Socket.(Socket.java:189)
    at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:127)
    at oracle.net.nt.ConnOption.connect(ConnOption.java:126)
    at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:306)
    ... 12 more

The driver is found (I get an exception because I'm not running any Oracle server but this is another story).

找到了驱动程序(我得到一个例外,因为我没有运行任何 Oracle 服务器,但这是另一回事)。

回答by Garis M Suero

I will try to put it in the weblogic's lib folder... and restart the server, so you will be sure that it is a classpath problem...

我会试着把它放在weblogic的lib文件夹中……然后重启服务器,这样你就可以确定这是一个类路径问题……

You should download the oracle drivers from oracle and put the .jar file in the project's CLASSPATH...

您应该从 oracle 下载 oracle 驱动程序并将 .jar 文件放在项目的 CLASSPATH...

You can download it at Oracle's drivers download page

您可以在Oracle 的驱动程序下载页面下载