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
getting class not found exception
提问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.OracleDriver
definitely means that the mentioned class is not on the class path. And because ojdbc5.jar
has 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