【发布时间】:2015-06-22 16:22:49
【问题描述】:
考虑一个包层次结构文件夹 1/hi。 folder1 包含 B.java,hi 包含 A.java。
B.java:
package hi.a12.pkg;
public class B { }
A.java:
package a12.pkg;
public class A {B b; }
现在 B.java 编译成功,但 A.java 没有。
因为两者都应该在同一位置生成类文件。因此,他们应该能够在没有 import 语句的情况下找到彼此。
但仍然显示 B 类未找到。
任何人都建议采取措施......或者出了什么问题......
【问题讨论】:
-
你究竟是如何编译它们的,从哪里编译? (我强烈怀疑你只是从错误的地方编译它们......)
-
您的软件包名称似乎与您的文件夹层次结构不匹配。
hi.a12.pkg.B应该在[some prefix]/hi/a12/pkg/B.java中。我不明白你为什么不对 A 使用相同的包前缀。 -
编译 B.java 后,我使用 cmd 命令从 hi 文件夹编译 A.java:javac -cp。 -d 。 A.java
-
@JonSkeet 我强烈怀疑你只是从错误的地方编译它们。这是一个非常不正确的说法。无论您尝试从何处编译类,它们位于不同于
package语句的目录结构中这一事实将总是阻止其中一个被编译。 -
@ChetanKinger:我错过了这样一个事实,即它们位于不同的包中,与文件夹结构不匹配......(话虽如此,语句是正确的,因为我确实强烈怀疑...只是怀疑不正确:)