"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
并重新编译它。
我有一个从 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
并重新编译它。