首页 > 解决方案 > 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。

提前谢谢了!

标签: javaimportpackages

解决方案


java中没有父子包或子包的概念。

如果您创建两个包 packageA.subPackageA 和 packageA.subPackageB,则 subPackageA 和 subPackageB 都将位于文件系统的文件夹 packageA 中。但是对于 java,packageA.subPackageA 和 packageA.subPackageB 是完全不同的,并且它们之间作为父子没有相关性。


推荐阅读