"java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver" 来自终端的 运行 错误

"java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver" error when running from terminal

我有一个从 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)时,我得到以下错误:

Error: Could not find or load main class Test2

所以我运行:

java -classpath ~/Desktop/JDBC2/src Test2

它 运行s,但我得到了以上 "ClassNotFoundException"。

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

时提及两者
java -classpath ~/Desktop/JDBC2/src:/oracle/jdbc/lib/ojdbc6.jar Test2 

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

export CLASSPATH=$CLASSPATH:.

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

Java Test2

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

中 运行 这个命令
java -cp path_to_oracle_driver.jar; MySample

P.S。如果你想从终端 运行 它,你必须从源代码中删除 package PackageAddress 并重新编译它。