2017-07-24 221 views
0

我在這裏看到很多類似的問題,但我找不到我的情況。Ojdbc7.jar在CLASSPATH中,但java.lang.ClassNotFoundException:oracle.jdbc.OracleDriver

我寫了一個演示程序來檢查JDBC。這裏是它的開頭:

import java.sql.*; 
import oracle.jdbc.*; 
import oracle.jdbc.OracleConnection; 
import java.io.*; 

class JdbcCheckup { 
    public static void main(String args[]) 
    throws SQLException, IOException, ClassNotFoundException { 
     Class.forName("oracle.jdbc.OracleDriver"); 
     OracleConnection conn = null; 
     conn = (OracleConnection) DriverManager.getConnection("jdbc:oracle:oci8:usr/[email protected]:host"); 
     // ... 

然後我運行下面的,並得到ClassNotFoundException

$ /usr/java71_64/bin/javac -cp /oracle/client/o12r1/jdbc/lib/ojdbc7.jar demo.java 
$ /usr/java71_64/bin/jar -cvfm demo.jar MANIFEST.MF JdbcCheckup.class 
added manifest 
adding: JdbcCheckup.class(in = 2345) (out = 1356)(deflated 42%) 
$ /usr/java71_64/bin/java -cp /oracle/client/o12r1/jdbc/lib/ojdbc7.jar:/oracle/client/o12r1/jlib/orai18n.jar -Djava.library.path=$ORACLE_HOME/lib -jar demo.jar 
java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver 
     at java.lang.Class.forNameImpl(Native Method) 
     at java.lang.Class.forName(Class.java:199) 
     at JdbcCheckup.main(demo.java:27) 

ojdbc7.jar我可以看到oracle.jdbc.OracleDriver類:

$ /usr/java71_64/bin/jar -tf /oracle/client/o12r1/jdbc/lib/ojdbc7.jar | grep Driver 
META-INF/services/java.sql.Driver 
oracle/jdbc/OracleDriver.class 
oracle/jdbc/driver/OracleDriver$1.class 
oracle/jdbc/driver/OracleDriver.class 
oracle/jdbc/driver/OracleDriverExtension.class 
oracle/jdbc/driver/T2CDriverExtension.class 
oracle/jdbc/driver/T4CDriverExtension.class 

所以,請解釋一下我做錯了嗎?

+0

你確定你不想'oracle/jdbc/driver/OracleDriver.class'嗎? – XtremeBaumer

+2

如果您有MANIFEST.MF中定義的類路徑,則不會評估「-cp」。如何在清單中查看您的類路徑? – Jens

+0

@Jens,我的MANIFEST.MF只是定義了主要類:'Main-Class:JdbcCheckup' – Vikora

回答

0

非常感謝!

按照評論中的建議,我在清單文件中添加了Class-Path

$ cat MANIFEST.MF 
Main-Class: JdbcCheckup 
Class-Path: /oracle/client/o12r1/jdbc/lib/ojdbc7.jar /oracle/client/o12r1/jlib/orai18n.jar 

$ /usr/java71_64/bin/javac -cp /oracle/client/o12r1/jdbc/lib/ojdbc7.jar demo.java 
$ /usr/java71_64/bin/jar -cvfm demo.jar MANIFEST.MF JdbcCheckup.class 
added manifest 
adding: JdbcCheckup.class(in = 2345) (out = 1356)(deflated 42%) 
$ /usr/java71_64/bin/java -Djava.library.path=$ORACLE_HOME/lib -jar demo.jar 
相關問題