∟Two Classes in Unnamed Packages - Hello.java and CallingHello.java
This section provides a tutorial example on how to place two Java classes in an unnamed package and how to call one class from another class in the unnamed package.
Testing with two classes is definitely more interesting. Let's enter another class called,
CallingHello.java, in C:\hy\src directory, and run the following commands:
C:\hy\src>type CallingHello.java
/**
* CallingHello.java
* Copyright (c) 2003 by Dr. Herong Yang
*/
public class CallingHello {
public static void main(String[] a) {
System.out.println("Calling Hello.main()...");
Hello.main(a);
}
}
C:\hy\src>del *.class
Could Not Find C:\hy\src\*.class
C:\hy\src>\jdk1.3.1\bin\javac -classpath . CallingHello.java
C:\hy\src>\jdk1.3.1\bin\java -classpath . CallingHello
Calling Hello.main()...
Hello world!
C:\hy\src>del *.class
C:\hy\src>cd ..\tmp
C:\hy\tmp>\jdk1.3.1\bin\javac -classpath ..\src ..\src\CallingHello.java
C:\hy\tmp>\jdk1.3.1\bin\java -classpath ..\src CallingHello
Calling Hello.main()...
Hello world!
C:\hy\tmp>del ..\src\*.class
This test shows us that:
The compiler is smart. It automatically compiles the source code of the referred class, Hello,
if Hello.class can not be found in the class paths.
In the next test, let's separate the classes into two directories,
and run the following commands:
C:\hy\tmp>copy ..\src\CallingHello.java
C:\hy\tmp>del ..\src\CallingHello.java
C:\hy\tmp>del *.class
Could Not Find C:\hy\tmp\*.class
C:\hy\tmp>del ..\src\*.class
Could Not Find C:\hy\src\*.class
C:\hy\tmp>\jdk1.3.1\bin\javac -classpath . CallingHello.java
CallingHello.java:8: cannot resolve symbol
symbol : variable Hello
location: class CallingHello
Hello.main(a);
^
1 error
C:\hy\tmp>\jdk1.3.1\bin\javac -classpath ..\src CallingHello.java
C:\hy\tmp>\jdk1.3.1\bin\java -classpath . CallingHello
Calling Hello.main()...
Exception in thread "main" java.lang.NoClassDefFoundError: Hello
at CallingHello.main(CallingHello.java:8)
C:\hy\tmp>\jdk1.3.1\bin\java -classpath .;..\src CallingHello
Calling Hello.main()...
Hello world!
C:\hy\tmp>del *.class
C:\hy\tmp>del ..\src\*.class
This test confirms that:
The compiler is indeed smart. It will search for source code in class paths, even
the referred class is not in the same directory as the class that is being compiled.