为什么当我编译Java文件时显示“错误:找不到符号” [关闭]

问题描述 投票:0回答:2

我正在学习Java,并使用IntelliJ。这是Dog类

package com.CS61B;

public class Dog {
    public static void makeNoise() {
        System.out.println("Bark!");
    }
}

enter image description here

这里是DogLauncher班

package com.CS61B;

public class DogLauncher {
    public static void main(String[] args) {
        Dog.makeNoise();
    }
}

enter image description here

当我编译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

enter image description here

为什么会这样?

java
2个回答
0
投票

Java希望您的类位于与这些类的包相对应的子目录中。由于您的Dog位于com.CS61B中,因此它必须位于目录com/CS61B中。

我已经有一段时间没有手动编译了,但是如果把它放在那里(比如在src/com/CS61B中,您应该可以转到src目录,然后执行

javac com/CS61B/DogLauncher.java

可能您需要传递这样的类路径

javac -cp . com/CS61B/DogLauncher.java

由于使用Intellij,我不确定您为什么要手动编译代码。


-1
投票

首先使用Dog编译javac Dog.java类,然后编译DogLauncher

© www.soinside.com 2019 - 2024. All rights reserved.