在Java中,即使它们在同一目录下,也找不到符号错误

  • 本文关键字:找不到 错误 符号 Java 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

即使它们在同一个目录上,它仍然会给出一个错误。

编辑:为了编译和运行,我交换了代码。抱歉。

  1. 运行javac Main.java
  2. 运行java Main

注意1:您不需要显式编译正在编译的文件中使用的文件。如果Java编译器看到您在类A中使用类B,Java将在编译容器类(本例中为类A(时隐式编译所有类(包括类B(。

注意2:如果您使用JDK>11,那么您只需使用一个命令即可编译并运行该程序。JEP 330,启动单文件源代码程序,是JDK 11版本中引入的新功能之一。所以,您可以运行java ClassName.java

问题是类路径。

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

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

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

由于类不在包中,所以folder2需要在类路径上。运行main。

java -cp folder1/folder2 Main

注意,我在类名上去掉了.java

如果您不想提供-cp参数(设置类路径(,您可以cd folder1/folder2,那么您将在包含类文件的文件夹中。你可以直接打字。

java Main

我在你的java文件中试过了。当它工作时,只有按下回车键才能看到任何输出。

相关内容

最新更新