我正在尝试使用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?如果是这样的话。
非常感谢
答案 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,这应该可以解决问题