我创建了一个简单的程序来练习多态性和继承,它可以在单个文件中编译并完美运行。然后,我将程序分成同一个程序包中的多个文件。我能够使用javac *.java
编译文件,并且编译时没有错误。但是,当我通过输入java zoo_sim
运行程序时,我得到:
Error: Could not find or load main class zoo_sim Caused by:
java.lang.NoClassDefFoundError: zoo_proj/zoo_sim (wrong name: zoo_sim)
包含main的类的名称为zoo_sim
。
程序包的名称为zoo_proj
。
在每个文件的顶部都有以下行:
package zoo_proj;
我是java的新手,如果我在这里缺少一些愚蠢的东西,我感到抱歉。 谢谢!
编辑:这是我的zoo_sim
课:
package zoo_proj;
public class zoo_sim {
public static void main(String args[]) {
//create and allocate animal array
Animal animalArray[] = new Animal[3];
//and Leo to animal array
Animal Leo = new Cat("Leo", 4, 13);
animalArray[0] = Leo;
//add Crixus to animal array
Animal Crixus = new Dog("Crixus", 5, 50);
animalArray[1] = Crixus;
//add Peter to animal array
Animal Peter = new Pig("Peter", 3, 100);
animalArray[2] = Peter;
//c style for loop
for(int i = 0; i < animalArray.length; i++) {
System.out.print(animalArray[i].getName() + " is " + animalArray[i].getAge() + " years old and says ");
animalArray[i].makeSound();
}
//print line in between
System.out.println();
//for each style for loop
for(Animal i : animalArray) {
System.out.print(i.getName() + " weighs " + i.getWeight() + " pounds and says ");
i.makeSound();
}
}
}
我正在使用在命令行中运行的linux。这是我对java -version
的输出:
openjdk version "11.0.3" 2019-04-16
OpenJDK Runtime Environment (build 11.0.3+7-Ubuntu-1ubuntu218.04.1)
OpenJDK 64-Bit Server VM (build 11.0.3+7-Ubuntu-1ubuntu218.04.1, mixed mode, sharing)
当我输入java zoo_proj.zoo_sim
时,我得到:
Error: Could not find or load main class zoo_proj.zoo_sim
Caused by: java.lang.ClassNotFoundException: zoo_proj.zoo_sim
答案 0 :(得分:1)
我认为您的问题是您正在软件包目录java zoo_proj.zoo_sim
中执行zoo_proj
。
上一层,从java zoo_proj.zoo_sim
上的目录上方执行zoo_proj
。
我要复制的步骤是:
/zoo
。package zoo_proj
的所有文件都在/zoo/zoo_proj
目录中,
即布局是:/zoo ----/zoo_proj -------------/Animal.java -------------/Cat.java -------------/Dog.java -------------/Pig.java -------------/zoo_sim.java
/zoo
目录中执行,而不是在zoo/zoo_proj
目录中执行。 javac zoo_proj/*.java
。成功执行后,zoo_proj
现在应该为每个.class
文件包含相应的.java
文件。java zoo_proj.zoo_sim
。程序成功执行。/zoo/zoo_proj
并从此处执行java zoo_proj.zoo_sim
,则输出为Error: Could not find or load main class zoo_proj.zoo_sim
。