简体   繁体   English

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

[英]Unable to compile using additional library/jar file, javac classpath

I am trying to compile code with javac using the ojdbc6.jar from oracle. 我正在尝试使用来自Oracle的ojdbc6.jar与javac一起编译代码。

I have my source in 'src' my .class in 'bin' and my 'jar' in includes. 我的源代码在“ src”中,.class在“ bin”中,我的“ jar”在include中。

my current javac command is: 我当前的javac命令是:

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

this worked until I imported the driver in one of my source files. 在我将驱动程序导入到我的一个源文件中之前,此方法一直有效。 Now I get: 现在我得到:

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;

I am sure the problem is with my classpath, any idea how to fix this. 我确信问题出在我的类路径上,任何想法如何解决这个问题。 I have manually checked to see whether the file is there and it is. 我已经手动检查了文件是否存在。

also seeing as I haven't got this far I might as well preempt the next question, do I have to point to this jar when running the program too? 还看到我还没走那么远,我可能会优先考虑下一个问题,在运行程序时也必须指向这个jar吗? if so how. 如果可以的话。

Many thanks 非常感谢

I'm not sure I see the problem, but here's a working example that might shed some light. 我不确定是否看到了问题,但这是一个可行的示例,可能会引起一些启发。 I got the driver 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

Addendum: 附录:

Looking closer, the DriverManager Service Provider mechanism specifies oracle.jdbc.OracleDriver . 仔细观察, DriverManager Service Provider机制指定了oracle.jdbc.OracleDriver You should use that instead of oracle.jdbc.driver.OracleDriver . 您应该使用它代替oracle.jdbc.driver.OracleDriver

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

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM