【问题标题】:"java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver" error when running from terminal从终端运行时出现“java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver”错误
【发布时间】:2023-03-17 20:16:01
【问题描述】:

我有一个从 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 变量。

标签: java eclipse oracle jdbc 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 的末尾
    猜你喜欢
    • 2012-07-20
    • 1970-01-01
    • 1970-01-01
    • 2016-12-05
    • 1970-01-01
    • 2014-12-07
    • 2020-03-09
    • 1970-01-01
    • 2021-12-04
    相关资源
    最近更新 更多