ClassNotFoundException在命令行上运行但在IntelliJ IDEA上运行正常

问题描述 投票:0回答:1

所以我只是尝试了一个简单的JDBC初学者代码来检索表行。当我在IntelliJ IDEA上运行时,它运行良好。但是当我尝试使用命令行运行它时它不会运行。

我经历过很多类似的问题,但没有人回答我的问题。我试过以下的事情:

  1. 在编译和运行java文件时寻找任何拼写错误(这是正确的)
  2. 在classpath中包含了ojdbc8驱动程序但是也没有用。
  3. 我已经验证我将JDK设置为环境变量。

我的文件保存为“oracle.java”,如果有帮助,我的班级名称是“oracle”。

import java.sql.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.lang.Class;
class oracle
{
    public static void main(String args[])
    {
        try
        {
            Class.forName("oracle.jdbc.driver.OracleDriver");

            Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","oracle");

            Statement stmt = con.createStatement();

            ResultSet rs = stmt.executeQuery("select * from emp");
            while(rs.next())
                System.out.println(rs.getInt(1)+" "+rs.getString(2)+" "+rs.getInt(3));

            con.close();
        }

        catch(Exception e)
        {
            System.out.println(e);
        }
    }
}

输出:

C:\Users\mypc\Desktop>java -cp ojdbc8.jar -Xdiag oracle
Error: Could not find or load main class oracle
Caused by: java.lang.ClassNotFoundException: oracle
java.lang.ClassNotFoundException: oracle
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
    at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Unknown Source)
    at java.base/sun.launcher.LauncherHelper.loadMainClass(Unknown Source)
    at java.base/sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
java jdbc command-line classnotfoundexception
1个回答
0
投票

假设您使用javac编译了文件,则需要在类路径中包含编译它的位置。如果您具有最简单的设置,并且在没有指示编译目标的javac参数的情况下调用-d,则它将与源文件位于同一目录中。

如果没有,假设您的JAR文件和源文件位于同一目录中,则需要执行以下操作:

javac -classpath ojdbc8.jar oracle.java`

之后,您需要在运行时在类路径中包含已编译类的位置。对于我的示例,其中您的工作目录与源文件和jar文件的位置相同。

java -classpath ojdbc8.jar;. oracle
© www.soinside.com 2019 - 2024. All rights reserved.