When we specify a package name in our Java code, e.g. the following code
package com.example.hello;
import java.io.Console;
public class HelloWorld {
public static void main(String[] args) {
Console console = System.console();
System.out.print("Input something? ");
String string;
if ((string = console.readLine()) != null) {
System.out.println(string);
}
}
}
We use "com.example.hello" as the package name, then change to the source directory, compile and execute the class.
$ cd com/example/hello
$ javac HelloWorld.java
$ java HelloWorld
Java can't execute the class by showing the error message
"Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld (wrong name: com/example/hello/HelloWorld)"
There are two solutions
1.remove the package qualifier from source code
2.change to the root directory of source, usually projectname/src, use the full class name of HelloWorld, in this example it's com.example.hello.HelloWorld
$ cd ../../../
$ java com.example.hello.HelloWorld