找不到符号:当 类 放在包中时,javac 不再编译我的驱动程序文件

Cannot find symbol: javac no longer compiles my driver file when classes are placed in a package

这里是菜鸟。

我有一组 class 个文件,它们被驱动程序文件使用。我最初编写的文件没有任何包语句,并使用以下命令编译文件:

javac -d classes src/Driver.java

驱动程序编译顺利(尽管我必须先在 .bash_profile CLASSPATH 变量中添加 src 目录的路径)

接下来,我在所有 src 文件的顶部添加了一个 package 语句。该语句的形式为:

package edu.school.course.project;

每个 src 文件都有相同的包语句。但是,javac 命令现在在执行时会产生 62 "cannot find symbol" 错误。在我的 src 目录中对另一个 class 文件的每个 Driver.java 引用都会失败。

我尝试将此导入语句添加到每个 class 文件中,该文件扩展或实现了包中的某些父 class:

import edu.school.course.project.*;

仍然,javac 产生 62 "cannot find symbol" 个错误。

我是否需要修改我的 CLASSPATH 变量以包含该包?我做错了什么?

从您的文件系统中删除旧的二进制 class 文件(classes 中的文件)。接下来,re-run上面的编译。如果所有内容都在同一个包中,则不需要 import 语句。修改您的 CLASSPATH 以包含 classes 目录(而不是您的 src 目录)。最后,运行 将 driver 设为 java edu.school.course.project.Driver

另一种方法是创建一个目录来保存您的驱动程序 class。例如:

mkdir -p src/edu/school/course/project
mv src/Driver.java src/edu/school/course/project

然后编译:

javac -d classes src/edu/school/course/project/Driver.java

您可以将所有其他相关 Java 文件放在同一目录中。

假设 Driver 有一个 main() 方法,运行 它:

java -cp classes/ edu.school.course.project.Driver