首页 > 解决方案 > 即使它们在Java中的同一目录中也找不到符号错误

问题描述

我在同一目录中有两个文件,Main.javaFunctions.java

的内容Main.java是这样的:

import java.util.Scanner; 

class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String s = scan.next();

        Functions you = new Functions(s);

        System.out.println("Your name is " + you);
    }
}

并且Functions.java

public class Functions {
    public String name;

    public Functions(String name) {
        this.name = name;
    }

    public String toString() {
        return name;
    }
}

我在终端上手动编译并运行它们。所以这就是我所做的:

javac folder1/folder2/*.java 之后 java folder1/folder2/Main.java

但这给了我一个错误:

error: cannot find symbol
Functions you = new Functions(s);
symbol:   class Functions

即使它们在同一个目录中,它仍然会报错。

编辑:我交换了编译和运行的代码。对此感到抱歉。

标签: java

解决方案


问题是类路径。

folder1
| folder2
| | Main.java
| | Functions.java

运行后,javac folder1/folder2/*.java您将拥有类文件。

folder1
| folder2
| | Main.class
| | Main.java
| | Functions.class
| | Functions.java

由于您的类不在包中,因此 folder2 需要位于类路径中。运行主要。

java -cp folder1/folder2 Main

请注意,我省略了.java类的名称。

如果您不想提供 -cp 参数(设置类路径),cd folder1/folder2那么您将位于包含类文件的文件夹中。您只需键入即可。

java Main

我用你的java文件试过这个。当它工作时,在您按 Enter 之前,您不会看到任何输出。


推荐阅读