简体   繁体   中英

java packages and mutual imports

using java i am trying to work out how to build sub-packages within parent packages, a common parent dir, and where sub-packages are imported between sub-packages and between packages in a mutually dependent way.

The Directory Structure

/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

The CLASSPATH

CLASSPATH="$CLASSPATH:/rootdir/Test_Source/parentDir/"

Calls Across sub-packages

here calls are made across sub-packages (ie from packageA/subPackageA to packageA/subPackageB and vice-versa)....

Class 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!");
    }
}

Class 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();
    }
}

for some reason ClassAA can't find ClassAB.

Calls Across Parent Packages

here calls are made across packages (from packageB/subPackageA to packageC/subPackageA and vice-versa)....

Class 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!");
    }  
}

Class 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();
    }
}

for some reason ClassBA can't find ClassCA.

many thanks in advance!

There is no concept of parent child packages or sub packages in java.

If you create two packages packageA.subPackageA and packageA.subPackageB, both subPackageA and subPackageB will be in folder packageA in file system. However for java, packageA.subPackageA and packageA.subPackageB are entirely different and no correlation between them as parent child.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM