从终端运行时出现“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 脚本时出现“连接被拒绝”