Troubleshooting NoClassDefFoundError in Java

I have a Java program called Main.java, it is located in the following directory:

/home/user/program/Main.java

When I try to run Main.java from the "program" directory, everything goes fine, I use this line:

/home/user/program$ java Main

But when I try to run Main.java from the home directory:

/home$ java /home/user/program/Main

I get:

Exception in thread "main" java.lang.NoClassDefFoundError: /home/user/program/Main
Caused by: java.lang.ClassNotFoundException: .home.user.program.Main

What is the reason for this error?

+5
source share
8 answers

This is due to your path class, which by default will be in the current directory. When you run java Mainfrom /home/user/program, it finds the class in the current directory (since the package does not seem to be installed, which means its default value). Consequently, he finds class in /home/user/program/Main.class.

java /home/user/program/Main /home ( ), /home/home/user/program, Main.class, Main .home.user.program.

. , java /-notation -; java /home/user/program/Main java .home.user.program.Main . , (.. ). java , , ( jar) ; , /home/home/user/program

, -cp -classpath:

java -cp /home/user/program Main
+10

, , (/home/user/program/Main). , classpath: java Main -cp/home/user/program

,

+3

, . classpath

/home$ java -cp userprogram Main
0

- , , :

  • Main "top" (root)

java, , , pakage classes.

/home/user/program. , "." ( ). java , .

, , :

package user.program;

/home ( java ). java :

java user.program.Main

, ( ). dirs, classpath + package + class. :

/home
user.program -> user/program/
Main         -> Main.class

!

0

, java /home/user/program/Main, Main home.user.program, , , Main ( , , .. ). package Main?

classpath .

0

:

java -cp/home/user/program

0

(NoClassDefFoundError). Android, eclipse env. - , NoClassDefFoundError , , , , . " " " Java" -

0

I encountered the same error when trying to compile and run it. The book "Head First Java" explains and solves this problem accordingly. Here is a screenshot from the book for your reference.

A screenshot from Head First Java about how to compile and run a java program by including package names.

Hope this will be helpful.

0
source

All Articles