1

我有一个ComPac.java带有以下代码的java文件:

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

该文件位于路径:/home/ec2-user/java_c

为了编译这个文件,我运行了javac Compac.java,并且生成了类文件。

在此处输入图像描述

现在轮到运行类文件了。

所以我做了java ComPac(下面的截图)

java ComPac

可以理解的是,我得到了错误Error: Could not find or load main class ComPac. Caused by: java.lang.NoClassDefFoundError: com/ComPac (wrong name: ComPac). 我假设是因为 java 文件中com声明了包。

因此,我尝试了,java com.ComPac并希望它能够工作(下面的屏幕截图)。

java com.ComPac

但我得到了错误:Error: Could not find or load main class com.ComPac. Caused by: java.lang.ClassNotFoundException: com.ComPac

那么我该如何运行呢?当涉及到 java 中的包时,运行的逻辑到底是什么?

使用Java-openjdk version "11.0.8" 2020-07-14 LTS(AWS Corretto)

使用的操作系统-Amazon Linux 2

4

3 回答 3

5

将课程放在名为“com”的文件夹中

然后在 bash shell 中:

$ java com/ComPac

(来自包含“com”的文件夹,而不是“com”内部)

于 2020-08-08T18:23:13.273 回答
3

如果您正在使用,Java 11那么您不需要先编译 java 文件然后运行该class文件。你可以直接运行java文件

java .\test.java

测试.java

package com;

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

命令:

java .\test.java

输出:

Hello World
于 2020-08-08T18:46:36.283 回答
2

正确的做法如下:

javac -d . ComPac.java

该开关-d .要求编译器将生成的类文件放在当前目录中,作为当前目录的.代表。只需使用命令即可了解有关开关的更多信息javac

现在,如果您ls在 Mac/Unix 或dirWindows 中使用该命令,您将看到一个目录,com已创建并ComPac.class已放置在此目录中。为了执行该类,您现在可以使用以下命令:

java com.ComPac
于 2020-08-08T19:18:35.337 回答