I am trying to create a package named myUtil, inside I have two subpackages named Node and BinaryTree.
Inside Node dir, I have Node.java and Node.class, and of course the first line in the java file is:
package myUtil.Node;
Now, in BinaryTree.java, located in BinaryTree directory, I would like to import Node.class to use it.
This is the code:
package myUtil.BinaryTree;
import myUtil.Node.Node;
public class BinaryTree {
public Node root;
}
When I try to compile it, it gives me this error:
BinaryTree.java:3: error: package myUtil.Node does not exist
import myUtil.Node.Node;
^
Also, I tried
import myUtil.Node;
import myUtil.Node.*;
but it still gives me this error...
Edit: As requested, I'm sharing the whole code.
This is Node.java:
package myUtil.Node;
public class Node {
int value;
Node left, right;
public Node(int value) {
this.value = value;
left = null;
right = null;
}
}
And this is BinaryTree.java:
package myUtil.BinaryTree;
import myUtil.Node.Node;
public class BinaryTree {
public Node root;
}
I'm compiling these files directly in their respective folders, using:
javac filename.java

Java doesn't support "sub"-packages. Even if packages are organized as in
java,java.net,java.util, each of them is an individual package - although on the disk packages are organized as folders and subfolders.And you don't
importpackages but only classes or methods.So in your description, to use the class
Nodefrom the packagemyUtil.Nodein another package, you would need toimport myUtil.Node.Node;If you want to use
Nodein a class within the same package (same folder on disk), you don't need to import that.An import like
import myUtil.Node.*;imports all classes of themyUtil.Nodepackage, but none of any package that starts withmyUtil.Node.(what you mentioned as "sub"-package). Java doesn't support such imports (like from a folder and all subfolders).To your specific situation: Java has a naming convention to use only lowercase letters in package names - convention means, you don't have to do it like that, but it is better if you do because other developers will understand your code faster. (And also we on StackOverflow can help better for you next questions ;-)
Also not every class has to be put into a separate package.
So for you, probably a package
myutilswith the two classesNodeandBinaryTreewould be fine - and you don't have to importNodeintoBinaryTreethen, as they would be both contained in the same package.