Re: Can't fix java.lang.ClassNotFoundException problem
Linux Guy wrote:
I'm working in Eclipse. My app runs fine within the IDE. I get the
ClassNotFoundException error when I try to run it from the command line.
My application is HelloWorld.java. It has a main and is a basic Hello
World application.
class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World !");
}
}
Since there's no "package" statement, the class belongs to
the default package. That sounds simpler than creating a named
package, but usually turns out to be more complicated. But we'll
let it go for now; I bring it up mostly to give you an opportunity
to say "Oh, but it *is* in a package; I just didn't tell you ..."
Eclipse builds the project.
projectdir/bin has HelloWorld.class
projectdir/src has HelloWorld.java
$ java -version
java version "1.6.0_10"
Java(TM) SE Runtime Environment (build 1.6.0_10-b33)
Java HotSpot(TM) Server VM (build 11.0-b15, mixed mode)
src]$ ls
HelloWorld.java
src]$ ls ../bin
HelloWorld.class
src]$ java HelloWorld.java
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld/java
Caused by: java.lang.ClassNotFoundException: HelloWorld.java
<snip>
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: HelloWorld.java. Program will exit.
Right. You haven't told java where to look for .class files,
with the result that it doesn't know it should look in ../bin for
anything. So it doesn't find HelloWorld.class and gives up. Also,
you're trying to execute the source file rather than the class file.
Well, actually, you're trying to execute a class named "java" in a
package named "HelloWorld" -- and of course, there's no such thing.
[... assorted fumblings snipped ...]
How do I run my java application from the command line ?
java -cp ../bin HelloWorld
.... unless there's something you haven't told us about "package"
statements and the like.
--
Eric.Sosman@sun.com