Java: Exception in thread main java.lang.NoClassDefFoundError

Contributor Icon Contributed by davak Date Icon February 12, 2005  
Tag Icon Tagged: Java programming

Common error that beginning java authors may experience.

    Exception in thread “main” java.lang.NoClassDefFoundError:

    You try to run a little java program and you get this blasted error. I first got this error when running our little hello world program.

    This occurs because the classpath is not setup or referenced correctly.

    Executing your program using this command should correct the problem:
    java -classpath . helloworld

    where helloworld is the name of your compiled class.

    This tells java that your classpath is your local directory.

Previous recipe | Next recipe |
 
  • LP
    Very helpful! I was stuck on this.. Thanks
  • Mimi
    My Classpath looks right, but I still get the error: Exception in thread "main"

    .;C:\Program Files\Java\jdk1.6.0_01\lib
  • Rajesh
    the classpath should include the directory in which u r keeping ur own class files.
  • Andy
    I'm sorry it did not work.
  • chandu
    if u have stored ur classes in the directory other than JDK installed...we need to set path to the bin dir by using
    set path=.....
    and for classes
    set classpath=....
  • Thank you!! It really helped me.
    i just copied my files in bin dir. try doing this.
  • harpreet
    thank you it really helped me
  • CP
    I have the same issue Exception in thread "main" java.lang.NoClassDefFoundError: any luck
  • v
    Just call this at the directory where you classfile XYZ.class is located :

    java -classpath . XYZ
  • karep
    salam

    didn't work for me ...
    any idea ?? :'(

    wassalam
  • Nick
    I had a problem with that, and then I noticed, that I had written"java -classpath . XYZ.class" instead of "java -classpath . XYZ" Don't know, if this helps you, but worked for me :)
  • springrider
    Thanks a lot! It help me!
  • abhishek
    Microsoft Windows [Version 6.0.6001]
    Copyright (c) 2006 Microsoft Corporation. All rights reserved.

    C:\Users\mdube>cd\

    C:\>javac C:\abhishek\Mohit.java

    C:\>java C:\abhishek\mohit
    Exception in thread "main" java.lang.NoClassDefFoundError: C:\abhishek\mohit

    C:\>java C:\abhishek/mohit
    Exception in thread "main" java.lang.NoClassDefFoundError: C:\abhishek/mohit

    C:\>javac C:\abhishek/Mohit.java

    C:\>$Recycle.Bin
    '$Recycle.Bin' is not recognized as an internal or external command,
    operable program or batch file.

    C:\>JAVAC
    Usage: javac <options> <source files>
    where possible options include:
    -g Generate all debugging info
    -g:none Generate no debugging info
    -g:{lines,vars,source} Generate only some debugging info
    -nowarn Generate no warnings
    -verbose Output messages about what the compiler is doing
    -deprecation Output source locations where deprecated APIs are us
    ed
    -classpath <path> Specify where to find user class files
    -sourcepath <path> Specify where to find input source files
    -bootclasspath <path> Override location of bootstrap class files
    -extdirs <dirs> Override location of installed extensions
    -d <directory> Specify where to place generated class files
    -encoding <encoding> Specify character encoding used by source files
    -source <release> Provide source compatibility with specified release
    -target <release> Generate class files for specific VM version
    -help Print a synopsis of standard options


    C:\>JAAVA
  • Tzell
    I am using JGrasp as a new Java learner and I hate it. The errors given when compiled to vague. Can anyone suggest a better application to begin learning and developing in?
  • FrederikNS
    the errors are thrown by the Sun Java Compiler, and that doesn't differ regardless of which developer environment you try to program in, as long as it's java, you'll have to stick with it.
    But some of the best environment to program java in would have to be Eclipse or NetBeans.
    They have an awful lot of features, and is very easy to use when you get over the initial general troubles, such as which features to use, and getting an overview of all the stuff they can do.
  • stacy
    try netbeans
  • ahmad aghajani
    My Classpath looks right, but I still get the error: Exception in thread "main"

    .;C:\Program Files\Java\jdk1.5.0_01\lib
  • Jim Thomas
    The above comment did not work. For newbies it may be easier to save the source files in the bin directory eliminating any path issues.
  • chandu
    we need to set two paths
    1. for JDK use following command
    set path=C:\......
    2. for classes where u compiled and kept
    set classpath=D:\prgrams......
  • grace
    you say executing your program using ... pls how exactly do i execute it. i need the basic steps
  • Sushil Karane
    java page we get the error as follows :

    Exception in thread "main" java.lang.UnsupportOperationException at sun.jdbc.odbc.jdbcOdbcConnection.createStatement(Unknown Source)
    at DBConn.<init><DBConn.java,Compiled Code>
    at ReceiveMail.<init><Receivemail.java,Compiled Code>
    at insertion.main(insertion.java:10)
  • For my CLASSPATH I have :
    C:\Program Files\Java\jdk1.6.0_10\jre\lib;C:\Program Files\Java\jdk1.6.0_10\jre\bin;C:\novell\ndk\ndssdk\java\lib\ldap.jar;.;C:\JavaProjects\SearchLDAPTest
    Where C:\JavaProjects\SearchLDAPTest is where my List.class compiled class resides

    I also created JAVA_HOME Variable for my user with a value of:
    C:\Program Files\Java\jdk1.6.0_10\

    and finally I have for my Path:
    C:\Program Files\Java\jdk1.6.0_10\jre\bin;D:\Program Files\SSH Communications Security\SSH Secure Shell;C:\Program Files\Java\jdk1.6.0_10\bin\javac.exe;C:\novell\ndk\njclv2r\src\njcl

    Which C:\Program Files\Java\jdk1.6.0_10\jre\bin is the bin of the RUNTIME or should I also list C:\Program Files\Java\jdk1.6.0_10\bin :: the JDK bin/ instead ?
    anyone with any CLEAR ideas ? thx
  • Abhhilash
    I have created the hello world program and i am using textpad to do that
    My program is compiling but when i run it gives me an error
    java.lang.NoClassDefFoundError:
    Exception in thread "main"
    Tool completed with exit code 1
    I have set my path to C:\jdk1.3\bin
    and the classpath to where the program reside but in vein can anybody help
  • irene
    noooooo.... i have tried it all.... :(
    it keeps saying that java.lang.noclassdeffounderror thing...
  • Nathiya S
    how do create path to j2sdk1.4.2_02
    i run small prgm, my error is
    exception in thread "main" java.lang.noclassdefFoundError

    how do clear my error
  • Martin
    I had the same problem. It turned out the cause was that I tried to compile a java sample file from a read-only folder.
    When I copied the .java file to my hard drive the problem went away
  • Rakesh
    Thanks great info
  • bothanks
    omfg ahmad aghajani ,
    i o u big!!!

    ty for suggesting at putting that in the Class path file, a program of mine has been corrupted for over 2 yrs, and i tried to fix it 1 last time, and ur suggestion worked!!

    ty!!
  • if After setting the path also it doesnt work.. save all files in bin dir and run the prgram using that path.
  • Neicey
    Here is how i fixed mine.
    The .Java and the .Class file is located in C:\Java . i got the above error and changed directory at the dos prompt by typing
    cd Java (Enter)
    Then I compiled by typing the below
    C:\Java>"C:\Program Files\Java\jdk1.5.0_16\bin\javac.exe" C:\java\saluton.java

    Than I run by typing the below
    C:\Java>java Saluton
    Results ...

    Saluton Mundo!

    Hope this Helps . Arichards
  • Sham
    Thanx a lot very usefull!!
  • sad
    After doing the following....where m is my class name

    java -classpath . m
    i get this........

    Unrecognized option: -classpath.m
    Could not create the Java virtual machine.
    help is appreciated!!!1
  • techno
    i think you are not giving space between the classpath n dot n m...
    like java -classpath[space].[space]m

    mine was also having the same error but when i gave spacing between them it worked,,..so u can also try dis once...
  • desperado
    thanks techno, great advice!
  • Su
    Your advice point out what I missed. Thz alot techno.
  • The One
    Ha! I figured it out! I just wasn't compiling every file! "javac *.java" fixed it all! YES!!
  • ut_stud007
    Awesome dude thanks this solved my problem..I used to think that java.exe compiles and executes the application but I gues I was wrong....
  • I had the same problem but your suggestion above did not work. You missed the most obvious problem which is that Java is case sensitive. If you reference the class as Helloworld in the script and then try to run it using java -classpath . helloworld (with the file actually named helloworld.class) then you will get the same error referenced above. The problem is the upper case "H" in the script and then the file starting with a lower case "h".
  • GXOne
    OMG Thankyou After 5 Hours Thankyou.. with that advice it all works exactly the way it should LOL
  • nice
    hi to all

    too , i have error :

    Exception in thread "main" java.lang.NoClassDefFoundError: nameclass

    help me.
  • Crimson
    hi guys,

    I got this error when i made the mistake of running the class file. Make sure you are running the job correctly (fyi, I'm running vista):

    Correct: C:\Users\Crimson\teaching> java Example

    Incorrect: C:\Users\Crimson\teaching> java Example.class

    This is really easy to forget about, especially if you're used to using an IDE like Eclipse, which was the case for me. I scratched my head for a little while and feel really dumb now.
  • desperado
    i used textpad and i still got the same error, can anyone tell me what's wrong?
  • Thomaso
    Thanks sooo much. if the java - classpath . helloworld doesnt work it is probably due to spacing and upper lower case letter problem.

    for me i didnt put a space after java and a space either side of the full stop. and i forgot to write my class with an upper case letter which is how it was saved.

    java(space) -classpath(space) . (space)Welcome1
  • jango19
    Exception in thread "main" java.lang.NoClassDefFoundError: Receiver/class
    Caused by: java.lang.ClassNotFoundException: Receiver.class
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    Could not find the main class: Receiver.class. Program will exit.

    where Receiver is my class..code is getting compiled perfectly but when i run its givin the above error..
  • Ram
    Hi ,

    First set the JAVA_HOME variable with your bin directory.
    then try to run .it will help u.

    Regards
    Ram Yadav
  • priyaj
    hello ,i got a problem while executing a sample java program.
    error is java.lang.NoClassDefFoundError: and im using jdk 1.6 version .
    someone helpout this
  • aravind
    thanq very much for giving the solution.......
  • nabil
    Awesome.
    It worked great
  • hello
    hey im not trieng to program a file or anything like taht. im just trieng to play a private game server and i keep getting the error message Exception in thread "main" java.lang.nodeffound: joader i have no idea how to fix it can anyone help? my CLASSPATH is C:\Program Files\Java\jdk1.5.0_18\bin; and my PATH in C:\Program Files\Java\jdk1.5.0_18\bin


    anyone help?
  • hello
    hey this is me hello again and please dont post anything too confusing i have no knowledge of java except for classpath and path so please keep it simple
  • hello
    and instead of joader its loader sorry for that
  • !!ALERT!! !!ALERT!!

    I just followed every suggestion in this string and no dice...

    FINALLY I GOT IT ----> (on Windows XP) MAKE SURE YOU COMPILE YOUR PROGRAM WITH C:\...javac ClassName.java before you try to execute with C:\...java ClassName

    You will know your program is compiled when you find a ClassName.class file in the same folder as your original ClassName.java program.

    Hope this helps the last desperate few.
    And yes, of course, make sure your path and classpath are correctly configured.
  • Loser
    Worked for me !!!
  • sixlead
    You will also get this error if you append the .class designator when you try to run it. as
    java HelloWorld.class

    java is expecting a class so the .class suffix is not necessary

    of course your class path might be wrong also ;-)
  • Anonymous
    Does not work
  • Ian
    Thank you - this is so helphul for me at the moment

    If you are also dependent on a jar file in the same folder you may need to have something like
    java -classpath .;./dependent.jar helloworld
  • rahul agarwal
    thanks for the replies that have been posted....
    i am so glad that my problem has been solved...
blog comments powered by Disqus