使用包时获取 java.lang.ClassNotFoundException
Getting java.lang.ClassNotFoundException when using package
我有一个 java 文件 ComPac.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
,生成了 class 文件。
现在轮到 运行 class 文件了。
所以我做了 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
并希望它能工作(下面的屏幕截图)。
但是我得到了错误:Error: Could not find or load main class com.ComPac. Caused by: java.lang.ClassNotFoundException: com.ComPac
。
那么我该如何运行呢?当涉及到 java 中的包时,运行ning 的逻辑究竟是什么?
Java 使用- openjdk version "11.0.8" 2020-07-14 LTS(AWS Corretto)
OS 使用- Amazon Linux 2
将 class 放入名为“com”的文件夹中
在 bash shell 然后是:
$ java com/ComPac
(来自包含“com”的文件夹,不在“com”内部)
如果您正在使用 Java 11
那么您不需要先编译 java 文件然后 运行 class
文件。您可以直接 运行 使用 java 文件
java .\test.java
test.java
package com;
public class test{
public static void main(String[] args) {
System.out.println("Hello World");
}
}
命令:
java .\test.java
输出:
Hello World
正确的做法如下:
javac -d . ComPac.java
开关 -d .
要求编译器将生成的 class 文件放在当前目录,因为 .
代表当前目录。只需使用命令 javac
即可了解有关开关的更多信息
现在,如果您在Mac/Unix中使用命令ls
或在Windows中使用dir
,您将看到一个目录,com
已创建并且 ComPac.class
已放置在此目录中。为了执行 class,您现在可以使用以下命令:
java com.ComPac
我有一个 java 文件 ComPac.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
,生成了 class 文件。
现在轮到 运行 class 文件了。
所以我做了 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
并希望它能工作(下面的屏幕截图)。
但是我得到了错误:Error: Could not find or load main class com.ComPac. Caused by: java.lang.ClassNotFoundException: com.ComPac
。
那么我该如何运行呢?当涉及到 java 中的包时,运行ning 的逻辑究竟是什么?
Java 使用- openjdk version "11.0.8" 2020-07-14 LTS(AWS Corretto)
OS 使用- Amazon Linux 2
将 class 放入名为“com”的文件夹中
在 bash shell 然后是:
$ java com/ComPac
(来自包含“com”的文件夹,不在“com”内部)
如果您正在使用 Java 11
那么您不需要先编译 java 文件然后 运行 class
文件。您可以直接 运行 使用 java 文件
java .\test.java
test.java
package com;
public class test{
public static void main(String[] args) {
System.out.println("Hello World");
}
}
命令:
java .\test.java
输出:
Hello World
正确的做法如下:
javac -d . ComPac.java
开关 -d .
要求编译器将生成的 class 文件放在当前目录,因为 .
代表当前目录。只需使用命令 javac
现在,如果您在Mac/Unix中使用命令ls
或在Windows中使用dir
,您将看到一个目录,com
已创建并且 ComPac.class
已放置在此目录中。为了执行 class,您现在可以使用以下命令:
java com.ComPac