无法使用其他库/ jar文件javac类路径进行编译

时间:2011-03-19 01:01:59

标签: java jar javac

我正在尝试使用oracle的ojdbc6.jar使用javac编译代码。

我的源代码是'src'我的.class在'bin'而我的'jar'在include中。

我当前的javac命令是:

javac -cp ".;./includes/ojdbc6.jar" src/*.java -d bin

这一直有效,直到我在我的一个源文件中导入驱动程序。现在我明白了:

javac -cp ".;./includes/ojdbc6.jar" src/*.java -d bin
src/OracleSingleton.java:1: package oracle.jdbc.driver does not exist
import oracle.jdbc.driver.OracleDriver;

我确定问题出在我的classpath上,不知道如何解决这个问题。我已手动检查文件是否存在,是否存在。

也看到我没有这么远,我也可以抢先一个问题,在运行程序时我是否必须指向这个jar?如果是这样的话。

非常感谢

2 个答案:

答案 0 :(得分:1)

我不确定我是否看到了这个问题,但这是一个可以解释问题的工作示例。我得到了司机here

import java.sql.*;
import java.util.*;

class DriveTest {
    public static void main (String args [])
        throws SQLException, ClassNotFoundException {
        System.out.println("Current JDBC Drivers: "
            + System.getProperty("jdbc.drivers"));
        Enumeration e = DriverManager.getDrivers(); 
        while (e.hasMoreElements()) {
            System.out.println(e.nextElement());
        }
    }
}
$ javac -cp .:ojdbc6.jar DriveTest.java 
$ java -cp .:ojdbc6.jar DriveTest
Current JDBC Drivers: null
oracle.jdbc.OracleDriver@2666e815
$ jar tf ojdbc6.jar | grep OracleDriver
oracle/jdbc/OracleDriver.class
oracle/jdbc/driver/OracleDriver$1.class
oracle/jdbc/driver/OracleDriver.class
oracle/jdbc/driver/OracleDriverExtension.class

附录:

仔细观察,DriverManager Service Provider机制指定oracle.jdbc.OracleDriver。您应该使用它而不是oracle.jdbc.driver.OracleDriver

$ cat META-INF/services/java.sql.Driver 
oracle.jdbc.OracleDriver

答案 1 :(得分:-1)

我认为你应该使用-classpath而不是cp,这应该可以解决问题