我已经安装了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说:impossibile加载或找到oracle.jdbc.driver.OracleDriver
我复制了ojdbc5.jar
,ojdbc6.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
的任何原因?
答案 0 :(得分:7)
您引用类路径上的文件夹并期望它加载其中的所有jar。这不是类路径的工作方式,你需要引用特定的jar(通常你应该不将第三方jar放在JDK文件夹中)。
同样重要的是要知道除了最基本的用例之外,java应用程序通常会忽略CLASSPATH
。
您可以通过以下方式完成您尝试实现的目标:
java -cp <path-to>\ojdbc7.jar oracle.jdbc.OracleDriver
这将失败顺便说一句,因为OracleDriver
没有public static void main(String[] args)
方法,因此无法像这样运行。使用JDBC驱动程序的常规方法是在应用程序类路径上安装驱动程序,并简单地指定正确的驱动程序URL。 JDBC 4.0(Java 6)或更高版本的驱动程序将自动从类路径加载(与-cp
,Class-Path
清单条目等一起指定)。
在不相关的说明中,oracle.jdbc.driver.OracleDriver
被视为已弃用,请改用oracle.jdbc.OracleDriver
,请参阅Difference between Oracle jdbc driver classes?
答案 1 :(得分:1)
在类路径上放置目录不会将所有jar文件放在类路径中的该目录中。目前尚不清楚为什么要将Oracle jar文件复制到Java安装目录中 - 我建议不这样做 - 但是你应该明确列出该位置。例如,如果您已将其复制到相对于您的应用程序的lib
目录中,则可以使用:
java -cp lib\ojdbc7.jar;. your.class.Name
你可以在*
命令行参数中使用-cp
来查找所有jar文件,例如
java -cp lib\*;. your.class.Name
或者可以将其复制到“扩展”目录中 - 但我认为明确更清楚。
答案 2 :(得分:0)
我也有同样的问题,这就是我所做的 我解压缩了ojdbc5.jar,然后我在提取的ojdbc5.jar中复制了oracle文件夹,然后粘贴到我编写jdbc程序的当前位置(不提程序,因为它与程序员不同),然后使用import oracle.jdbc。*;我的jdbc程序中的语句为oracle.jdbc,其中包含OracleDriver。 其余的程序是相同的
答案 3 :(得分:0)
在将ojdbc6.jar
复制到<jdk-home>/jre/lib/ext/
之前,在IDEA中,您需要在&#34; Structure&#34;中添加ojdbc6.jar
文件。 - &GT; &#34; SDK&#34; - &GT; &#34;添加classpath&#34;到<jdk-home>/jre/lib/ext/ojdbc6.jar