我有一个名为“ Averages.Java”的程序,可以在我的IDE中正常运行,但是当我在命令提示符下导航到该程序的正确位置并尝试运行它时,出现错误消息
“错误:无法找到或加载主类平均值,原因如下: java.lang.ClassNotFoundException:平均值
这是程序的代码
import java.util.Scanner;
public class Averages1 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Enter first user name: ");
String firstName = in.next();
System.out.print("Input first number: ");
int num1 = in.nextInt();
System.out.print("Enter second user name: ");
String secondName = in.next();
System.out.print("Input second number: ");
int num2 = in.nextInt();
System.out.print("Enter third user name: ");
String thirdName = in.next();
System.out.print("Input third number: ");
int num3 = in.nextInt();
System.out.println(firstName +": "+ num1);
System.out.println(secondName +": "+num2);
System.out.println(thirdName +": "+num3);
System.out.println("Total of 3 numbers is : " + (num1 + num2 + num3));
System.out.println("Average of 3 numbers is: " + (num1 + num2 + num3) / 3);
}
}
答案 0 :(得分:2)
您应该将文件另存为Averages1.java
,因为这就是您的类名。
然后,导航到该文件所在的位置,并使用以下命令:
javac Averages1.java
现在,将生成一个Averages1.class
文件。要运行它,您需要使用以下命令:
java Averages1
答案 1 :(得分:0)
简单地说,您的类名称必须与它们所包含的.java
文件名相匹配。
由于您的课程定义为Averages1
,因此必须将其保存在文件名Averages1.java
中。
如果名称不匹配,Java编译器将始终抛出此错误。
大多数现代IDE 应该在创建类时已经警告过您(例如,IntelliJ IDEA确实如此)。
答案 2 :(得分:0)
对于遇到同样问题的不幸者:不要阅读此答案,请转到here。
嘿,欢迎来到stackoverflow!
我将这个问题标记为this question的重复,这个问题有一个广泛的答案,应该可以为您提供很多帮助(尤其是关于软件包的 wink )。
在一条评论中,您共享了java命令输出,这引发了以下异常:
Error: Could not find or load main class Averages1
Caused by: java.lang.NoClassDefFoundError: averages/Averages1 (wrong name: Averages1)
查看引起错误的异常,您可以看到java命令正在 averages 包中寻找Averages1类。这意味着您没有共享完整的源代码。您可能已经在Averages1.java
源文件的顶部定义了包,看起来像package averages;
。使用软件包时,在使用java命令时,需要使用完全合格的类名,包括软件包名。
java averages.Averages1
不幸的是,java命令期望Averages1类文件(您之前使用javac命令生成的文件)位于averages
文件夹中。要从当前工作目录运行Averages1,您需要将Averages1.class
文件放在averages
子目录中:
/ <-- current working directory
/averages/Averages1.class
所以。您会发现,如果您有多个具有多个类的文件(如果您真的想在没有脚本的情况下手动执行此操作,那么您会疯了!),以及第三方库(精美的数学资料,日志记录等),那么这整堆内容将很混乱。 )的情况(有时100%是这种情况),您不想手动执行此操作。幸运的是,有些人使您的生活更轻松。诸如gradle或Maven之类的构建工具可以处理所有这些问题,只剩下一个文件,您可以在其中定义所需的文件(在您的情况下可能是jar文件,或多或少是可运行的zip文件)以及要包含的库。像Eclipse和IDEA这样的IDE也是如此。如果您真的想手动执行此操作,请确保已阅读所使用命令的手册。