我正在学习Java,并使用IntelliJ。这是Dog类
package com.CS61B;
public class Dog {
public static void makeNoise() {
System.out.println("Bark!");
}
}
这里是DogLauncher班
package com.CS61B;
public class DogLauncher {
public static void main(String[] args) {
Dog.makeNoise();
}
}
当我编译Java文件时,它显示错误。
abc@DESKTOP-31H1G15 MINGW64 ~/IdeaProjects/GettingStarted/src/com/CS61B
$ javac Dog.java
abc@DESKTOP-31H1G15 MINGW64 ~/IdeaProjects/GettingStarted/src/com/CS61B
$ ls
Dog.class DogLauncher.java hello.java Helloworld.java
Dog.java hello.class HelloNumbers.java LargerFunc.java
abc@DESKTOP-31H1G15 MINGW64 ~/IdeaProjects/GettingStarted/src/com/CS61B
$ javac DogLauncher.java
DogLauncher.java:5: error: cannot find symbol
Dog.makeNoise();
^
symbol: variable Dog
location: class DogLauncher
1 error
为什么会这样?
Java希望您的类位于与这些类的包相对应的子目录中。由于您的Dog
位于com.CS61B
中,因此它必须位于目录com/CS61B
中。
我已经有一段时间没有手动编译了,但是如果把它放在那里(比如在src/com/CS61B
中,您应该可以转到src
目录,然后执行
javac com/CS61B/DogLauncher.java
可能您需要传递这样的类路径
javac -cp . com/CS61B/DogLauncher.java
由于使用Intellij,我不确定您为什么要手动编译代码。
首先使用Dog
编译javac Dog.java
类,然后编译DogLauncher
类