我在java中有这些程序:
//file ../src/com/scjaexam/tutorial/GreetingsUniverse.java
package com.scjaexam.tutorial;
public class GreetingsUniverse {
public static void main(String[] args) {
System.out.println("Greetings, Universe!");
Earth e = new Earth();
}
}
//file ../src/com/scjaexam/tutorial/planets/Earth.java
package com.scjaexam.tutorial.planets;
public class Earth {
public Earth() {
System.out.println("Hello from Earth!");
}
}
我可以使用以下方法编译第二个没有错误:
javac -d classes src/com/scjaexam/tutorial/planets/Earth.java
这会将编译后的文件Earth.class
按预期放入../classes/com/scjaexam/tutorial/planets/
文件夹中。现在我必须编译主类GreetingsUniverse.java
,但是这个命令失败了:
javac -d classes -cp classes src/com/scjaexam/tutorial/GreetingsUniverse.java
src/com/scjaexam/tutorial/GreetingsUniverse.java:7: error: cannot find symbol
Earth e = new Earth();
^
symbol: class Earth
location: class GreetingsUniverse
src/com/scjaexam/tutorial/GreetingsUniverse.java:7: error: cannot find symbol
Earth e = new Earth();
^
symbol: class Earth
location: class GreetingsUniverse
编译(然后运行)这个程序的正确命令是什么?
答案 0 :(得分:2)
您尚未导入Earth
类,因此编译器不知道Earth
引用的内容。您应该在GreeingsUniverse.java
文件的开头添加此行:
import com.scjaexam.tutorial.planets.Earth;
答案 1 :(得分:1)
您需要导入Earth
:
package com.scjaexam.tutorial;
import com.scjaexam.tutorial.planets.Earth;
public class GreetingsUniverse {
public static void main(String[] args) {
System.out.println("Greetings, Universe!");
Earth e = new Earth();
}
}
当编译器说"cannot find symbol: class Earth"
时,它指的是你没有导入的类。请确保在课堂声明之前包括您在课堂上使用的所有课程。
答案 2 :(得分:1)
您正在尝试创建一个Earth对象的实例,但是这是一个单独的包,这意味着它无法找到它。您需要使用以下命令在GreetingsUniverse类中导入Earth类:
import com.scjaexam.tutorial.planets.Earth;