Java 在 eclipse 中运行并会编译,但不会在 cmd 上执行,但仍会在 eclipse 中运行。我怎样才能让它在cmd中执行?

Java runs in eclipse and will compile, but wont execute on cmd, but still runs in eclipse. How can I get it to execute in cmd?

所以我在 eclipse 中设置了一个基本的 hello world,我可以使用 cmd 轻松编译它(我已经设置了所有必要的路径),但是当我尝试使用 java 命令执行时你好世界,它总是 returns 相同的错误: 错误:找不到或无法加载主class helloWorld 原因:java.lang.NoClassDefFoundError:net/codejava/helloWorld(错误名称:helloWorld)

这是使用的代码:

package net.codejava;

public class helloWorld {

    public static void main(String[] args) {
        System.out.println("Hello World");
    }

}

我在正确的目录中 cd(我想,我 cd 到 src 目录,然后进入存储在 src 中的包文件)并且正在使用 Windows 10 和 java 18.0.1和 JRE 构建 18.0.1+10-24

任何帮助将不胜感激,因为当代码在 eclipse 控制台上毫不费力地运行时,这非常令人沮丧。谢谢

您的文件有 'package' net.codejavahelloWorld 的名称,也就是说,这个 class 的全名是 net.codejava.helloWorld

java 命令,至少在您使用它的方式中,要求您传递全名,因此,您必须 运行 java net.codejava.helloWorld。只是 java helloWorld 根本行不通。

但这还不是全部。

Java 需要 找到 包含 class net.codejava.helloWorld 代码的 class 文件。它通过首先将该全名转换为某种路径来实现这一点:net/codejava/helloWorld.class,然后它将扫描 class 路径中的每个条目。您可以将目录和 jar 文件放在 class 路径上。

因此,您的系统上有一个目录;我们称此目录为 X。X 包含一个名为 net 的目录,其中包含一个名为 codejava 的目录,其中包含一个名为 helloWorld.class 的文件。如果没有这样的 X(例如,你的 class 文件不在名为 codejava 的目录中),你将不得不通过创建这些目录来解决这个问题。

然后,X(而不是代码 java 目录!)需要在 class 路径上。通常(这取决于您的配置方式),'the current dir' 默认位于 class 路径上。

鉴于您的代码位于 /home/PythonSux/workspace/learningjava/net/codejava/helloWorld.class 中,这意味着需要位于 class 路径上的目录是 /home/PythonSux/workspace/learningjava。毕竟,如果您从那里寻找 net/codejava/helloWorld.class,您会找到正确的文件。

因此,要么 cd 到该目录,要么 运行 java -cp /home/PythonSux/workspace/learningjava net.codejava.helloWorld

请注意,这通常不是您实际 运行 java 应用程序的方式。你可以从你的 IDE 中 运行 它们,或者你让你的构建工具 运行 它,或者你将你的 java 应用程序打包到一个 jar 文件中,然后 运行等等。