0

我正在尝试打包一组在打包之前编译/运行得很好的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
}
4

2 回答 2

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>
于 2013-03-22T01:37:20.230 回答
1

当您说“打包”时,您的意思是package在源代码中“添加声明后”吗?

如果是这样,我认为您忽略了 java 包需要反映源文件所在的实际目录。为了package people;工作,您需要创建一个名为的目录并将people源文件放在那里。

正如我假设您正在使用的那样javac,如果您一次编译这两个文件,javac *.java这应该可以正常工作(即使您没有将文件驻留在正确的目录中)。但是如果你想单独编译它们,你需要javacpeople.

$ mkdir people
$ mv Person.java Female.java people/
$ javac people/Person.java
$ javac people/Female.java
于 2013-03-22T01:33:23.030 回答