java - java包和相互导入
问题描述
使用 java,我试图弄清楚如何在父包、公共父目录中构建子包,以及子包之间以及包之间以相互依赖的方式导入子包的位置。
目录结构
/rootdir/TestSource/parentDir/packageA/subPackageA/ClassAA.java
/rootdir/TestSource/parentDir/packageA/subPackageB/ClassAB.java
/rootdir/TestSource/parentDir/packageB/subPackageA/ClassBA.java
/rootdir/TestSource/parentDir/packageC/subPackageA/ClassCA.java
类路径
CLASSPATH="$CLASSPATH:/rootdir/Test_Source/parentDir/"
跨子包调用
这里的调用是跨子包进行的(即从 packageA/subPackageA 到 packageA/subPackageB,反之亦然)....
AA 级
package packageA.subPackageA;
import packageA.subPackageB.*;
public ClassAA
{
private ClassAB testClass;
public ClassAA()
{
}
public void sayHelloWorld()
{
System.out.println("Hello World from AA....");
testClass = new ClassAB();
testClass.sayHelloWorld();
}
public void sayGoodbyeWorld()
{
System.out.println("Goodbye World from AA!");
}
}
AB类
package packageA.subPackageB;
import packageA.subPackageA.*;
public ClassAB
{
private ClassAA testClass;
public ClassAB()
{
}
public void sayHelloWorld()
{
System.out.println("Hello World from AB....");
testClass = new ClassAA();
testClass.sayGoodByeWorld();
}
}
出于某种原因,ClassAA 找不到 ClassAB。
跨父包调用
这里调用是跨包进行的(从 packageB/subPackageA 到 packageC/subPackageA,反之亦然)....
BA类
package packageB.subPackageA;
import packageC.subPackageA.*;
public ClassBA
{
private ClassCA testClass;
public ClassBA()
{
}
public void sayHelloWorld()
{
System.out.println("Hello World from BA....");
testClass = new ClassCA();
testClass.sayHelloWorld();
}
public void sayGoodbyeWorld()
{
System.out.println("Goodbye World from BA!");
}
}
CA 类
package packageC.subPackageA;
import packageB.subPackageA.*;
public ClassCA
{
private ClassBA testClass;
public ClassCA()
{
}
public void sayHelloWorld()
{
System.out.println("Hello World from CA....");
testClass = new ClassBA();
testClass.sayGoodbyeWorld();
}
}
由于某种原因 ClassBA 找不到 ClassCA。
提前谢谢了!
解决方案
java中没有父子包或子包的概念。
如果您创建两个包 packageA.subPackageA 和 packageA.subPackageB,则 subPackageA 和 subPackageB 都将位于文件系统的文件夹 packageA 中。但是对于 java,packageA.subPackageA 和 packageA.subPackageB 是完全不同的,并且它们之间作为父子没有相关性。
推荐阅读
- material-ui - 在 MuiThemeProvider 中设置身体背景图片
- html - 如何在 ReactJS 中动态选择要渲染的元素
- c++ - GPU 上的 BFCAllocator 真的支持在 GPU 执行之前进行主机端释放吗?
- bootstrap-modal - Laravel 5.8 将 HTML 文本从数据库解析为模态
- triggers - 创建在特定列更新后插入数据的触发器
- python-3.x - 在 Python 中建立一个模拟数据库以进行单元测试
- javascript - JavaScript:从全局函数返回的多个变量不能被对象访问
- oracle-apex - Oracle APEX - 区域显示选择器 - 选择特定选项卡
- cron - 使用 cron 运行 ansible-playbook
- java - 401 Malformed HTTP basic Authorization header: Error on execution api through RestTemplate