从终端运行时出现“java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver”错误

Posted

技术标签:

【中文标题】从终端运行时出现“java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver”错误【英文标题】:"java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver" error when running from terminal 【发布时间】:2015-10-20 04:37:41 【问题描述】:

我有一个从 Eclipse 成功运行的程序。

但是,当我想从终端运行它时,我遇到了著名的错误:

"java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver"

在这一行:

Class drvClass = Class.forName("oracle.jdbc.driver.OracleDriver");


PS:

我在 CLASSPATH 中有以下内容:

/oracle/jdbc/lib/ojdbc6.jar

还要注意我编译成功(javac Test2.java)。然后当我运行它(java Test2)时,我收到以下错误:

错误:无法找到或加载主类 Test2

所以我跑了:

java -classpath ~/Desktop/JDBC2/src Test2

它运行了,但我得到了上面的“ClassNotFoundException”。

【问题讨论】:

在类路径中包含驱动jar 你添加到-classpath参数了吗? 是的,如果你的意思是在运行时:java -classpath ~/Desktop/JDBC2/src Test2 使用 -classpath 会覆盖您的 CLASSPATH 变量。 所以试试 -classpath ~/Desktop/JDBC2/src:/oracle/jdbc/lib/ojdbc6.jar,例如。你需要在类路径中,就像我说的,-classpath 覆盖你的 CLASSPATH 变量。 【参考方案1】:

我发现这个问题很棘手:原因与jar文件地址后的分号有关。 起初我将 MySample.java 的目录更改为另一个目录(你不能这样做),例如 C:\ 然后我从源代码中删除了包地址,最后我在 cmd 中运行了这个命令

java -cp path_to_oracle_driver.jar; MySample

附:如果你想从终端运行它,你必须从源代码中删除package PackageAddress,然后重新编译。

【讨论】:

【参考方案2】:

正如上面在 cmets 中提到的 @yngwietiger,在运行 .class 文件时使用 -classpath 参数,会覆盖原始 CLASSPATH 和预定义的 ojdbc6.jar 文件。所以我们需要在运行的时候同时提及:

java -classpath ~/Desktop/JDBC2/src:/oracle/jdbc/lib/ojdbc6.jar Test2 

或者,作为更好的解决方案,我们可以将当前路径添加到 CLASSPATH(注意末尾的冒号和点):

export CLASSPATH=$CLASSPATH:.

而且,为了运行,我们只需要输入:

Java Test2

【讨论】:

你错过了';'在 .jar 的末尾

以上是关于从终端运行时出现“java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver”错误的主要内容,如果未能解决你的问题,请参考以下文章

从用户终端运行 Eclipse 时出现错误,但不是从 root 运行

从终端运行 npm 时出现“module.js:557 throw err”

从终端运行时出现“java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver”错误

Telnet:当我在 localhost 上运行 python 脚本时出现“连接被拒绝”

在 IDEA 终端中运行激活器命令时出现 java.lang.NoClassDefFoundError

运行 JAR(Fxyz3d 库)时出现 FileSystemNotFoundException