考虑包层次结构文件夹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没有编译。
因为两者都应该在同一位置生成类文件。因此,他们应该能够在没有进口声明的情况下找到对方。
但是仍然没有找到B级。
任何人都建议采取措施......或者出了什么问题......
答案 0 :(得分:1)
考虑包层次结构文件夹1 / hi。 folder1包含B.java和 嗨包含A.java。
因此B.java
位于folder1
,A.java
位于名为hi
的文件夹中。到目前为止一切都很好。
B.java
看起来像这样:
package hi.a12.pkg;
public class B { }
糟糕。 B.java
表示它位于名为package
的{{1}}中,但它在磁盘上的物理位置为hi.a12.pkg
。这就是问题所在。将您的文件放在folder1
语句指示的文件夹中,否则其他类将无法找到它们。
理解这个概念并解决问题的快速方法是:
package
中的package
语句更改为B.java
。package folder1;
中的package
语句更改为A.java
package folder1.hi;
声明之后import
中{li> B
A.java
package
import folder.B;
上方的B.java
目录中的folder1
编译为javac folder1\B.java
A.java
上方的folder1
目录中的javac folder1\hi\A.java
编译为}
答案 1 :(得分:-1)
有几个问题。
首先,看起来您的包被命名为错误的方式。尝试
表示A.java(应该在...... / pkg / a12目录中):
package pkg.a12;
表示B.java(必须在... / pkg / a12 / hi目录中):
package pkg.a12.hi;
其次,您的文件A.java需要使用import语句说出B所在的位置:
package pkg.a12;
import pkg.a12.hi.B;
public class A {B b; }
第三,编译A时,你必须在pkg以上的文件夹中,并参考A的完整路径:
javac pkg/a12/A.java
这也将编译B.java