Java编译器行为问题

时间:2009-12-30 09:27:54

标签: java

我有一个界面&它的实现类在同一个包中。我在命令行中使用javac来编译它们。我能够成功编译接口类,但是在编译接口类后尝试编译实现类时,我收到错误 - 找不到符号。但是,作为界面&它的实现是在同一个文件夹中,如果我做一个Javac *。我能够编译它们。

有人可以帮我理解这种行为吗?谢谢你的时间

2 个答案:

答案 0 :(得分:5)

Java编译器通过文件名约定查找包,a.b.c.Interface被解释为查找a/b/c/Interface.class中的接口

如果从类路径的根目录运行javac,编译器将找到您的接口。即如果您的软件包位于D:\sources\a\b\c,请在D:\sources中启动javac并编译a\b\c\Impl.java

答案 1 :(得分:1)

您必须同时编译这两个文件,或者在.class的类路径中添加第一次运行的javac文件。 javac不会尝试智能,也不会在您的硬盘中搜索可能解决丢失符号的文件。如果你没有传递内容,它就找不到它。