我正在尝试打包一组在打包之前编译/运行的java文件。添加后 包 在第一行我收到以下错误!
cannot find symbol
symbol: class Person
以下是导致相同错误的简化代码段: 包人;
-Person.java
package people;
abstract public class Person
{
// some code
}
-Female.java
package people;
public class Female extends Person
{
Female(){}
// some code
}
答案 0 :(得分:1)
当您说“打包”时,您的意思是“在源代码中添加package
声明后”吗?
如果是这样,我认为您忽略了java包需要反映源文件所在的实际目录。为了使package people;
起作用,您需要创建一个名为people
的目录并将源文件放在那里。
正如我假设您正在使用javac
,如果您使用javac *.java
一次编译两个文件,这应该可以正常工作(即使您没有驻留在正确目录中的文件) 。但是如果要单独编译它们,则需要从javac
的父目录运行people
。
$ mkdir people
$ mv Person.java Female.java people/
$ javac people/Person.java
$ javac people/Female.java
答案 1 :(得分:1)
“无法找到符号”通常表示编译器找不到您尝试使用的标识符。在这里看起来它找不到类Person。我认为这个错误是在女性班中被抛出的。
您是如何编译源文件的?您是使用像Eclipse这样的IDE还是通过命令行编译它?如果您使用的是IDE,它可以帮助您更好地识别问题。
通过命令行编译时,应确保在类Female之前编译Person。由于类文件位于包中,您应该从源的根目录编译文件
示例 - Person.java和Female.java都在包“pack”中,这就是我编译的方式
D:\Applications\eclipse\eclipse-workspace\Test\src>javac pack\*.java
D:\Applications\eclipse\eclipse-workspace\Test\src>