Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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
Ojdbc7.jar位于类路径中,但java.lang.ClassNotFoundException:oracle.jdbc.OracleDriver_Java_Oracle_Jdbc_Oci8_Java.lang.class - Fatal编程技术网

Ojdbc7.jar位于类路径中,但java.lang.ClassNotFoundException:oracle.jdbc.OracleDriver

Ojdbc7.jar位于类路径中,但java.lang.ClassNotFoundException:oracle.jdbc.OracleDriver,java,oracle,jdbc,oci8,java.lang.class,Java,Oracle,Jdbc,Oci8,Java.lang.class,我在这里看到了很多类似的问题,但我找不到我的案例 我编写了一个演示程序来检查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, C

我在这里看到了很多类似的问题,但我找不到我的案例

我编写了一个演示程序来检查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/pass@ldap: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
所以请解释一下我做错了什么?

非常感谢

按照注释中的建议,我在清单文件中添加了
类路径

$ 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

是否确实不希望使用
oracle/jdbc/driver/OracleDriver.class
?如果在MANIFEST.MF
中定义了类路径,则不会对cp
进行计算。您的类路径在清单中看起来如何?@Jens,my manifest.MF只定义了主类:
main class:JdbcCheckup
删除清单并重试如果您使用
-jar
执行,则必须在清单中定义类路径。请张贴您当前的舱单;
-cp
类路径被忽略。