2

我已经安装了 Oracle 11.2 和 Java:

java version "1.7.0_09"
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)

在命令行中,如果我尝试:

java oracle.jdbc.driver.OracleDriver

Java 说:不可能加载或找到 oracle.jdbc.driver.OracleDriver

我已经复制了ojdbc5.jarojdbc6.jar并且ojdbc6_g.jar

oraclexe\app\oracle\product\11.2.0\server\jdbc\lib
C:\Program Files\Java\jdk1.7.0_09\lib

如果我跑步,echo %CLASSPATH%我会得到:

C:\Program Files\Java\jdk1.7.0_09\lib (ie where I have copied the jar files)

Java找不到的任何原因oracle.jdbc.driver.OracleDriver

4

4 回答 4

7

您在类路径上引用了一个文件夹,并希望它加载其中的所有 jar。这不是类路径的工作方式,您需要引用特定的 jar(通常不应第三方 jar 放在 JDK 文件夹中)。

同样重要的是要知道CLASSPATH,除了最基本的用例之外,java 应用程序通常会忽略 。

您可以通过以下方式完成您尝试实现的目标:

java -cp <path-to>\ojdbc7.jar oracle.jdbc.OracleDriver

顺便说一句,这将失败,因为OracleDriver没有public static void main(String[] args)方法,因此不能像这样运行。使用 JDBC 驱动程序的正常方法是将驱动程序放在应用程序类路径中,并简单地指定正确的驱动程序 URL。JDBC 4.0 (Java 6) 或更高版本兼容的驱动程序将自动从类路径加载(如用-cpClass-Path清单条目等指定)。

在不相关的说明中,oracle.jdbc.driver.OracleDriver被认为已弃用,oracle.jdbc.OracleDriver请改用,请参阅Oracle jdbc 驱动程序类之间的区别?

于 2013-07-17T13:58:56.007 回答
1

将目录放在类路径上并不会将所有 jar 文件放在该目录中的类路径上。目前尚不清楚为什么要将 Oracle jar 文件复制到 Java 安装目录中——我建议要这样做——但你应该明确列出该位置。例如,如果您已将其复制到lib相对于您的应用程序的目录中,您可以使用:

java -cp lib\ojdbc7.jar;. your.class.Name

可以*在命令行参数中使用-cp来查找所有 jar 文件,例如

java -cp lib\*;. your.class.Name

或者您可以将其复制到“扩展”目录中 - 但我认为明确表示更清楚。

于 2013-07-17T13:53:46.280 回答
0

我也有同样的问题,这就是我所做的,我提取了 ojdbc5.jar,然后我将 oracle 文件夹复制到提取的 ojdbc5.jar 中,然后粘贴到我编写 jdbc 程序的当前位置(没有提到目录,因为它因程序员而异),然后使用 import oracle.jdbc.*; 我的 jdbc 程序中的语句为 oracle.jdbc 中包含 OracleDriver。程序的其余部分相同

于 2015-09-01T14:54:20.087 回答
0

在复制ojdbc6.jar到之前<jdk-home>/jre/lib/ext/,在IDEA中你需要将ojdbc6.jar“结构”->“SDK”->“添加类路径”中的文件添加到<jdk-home>/jre/lib/ext/ojdbc6.jar

于 2016-06-30T12:00:44.897 回答