我正在尝试使用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="$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完全不同,并且作为父级子级,它们之间没有关联。

10-05 21:36