aspose file tools*
The moose likes Beginning Java and the fly likes Exception in thread Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Spring in Action this week in the Spring forum!
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Exception in thread "main"" Watch "Exception in thread "main"" New topic
Author

Exception in thread "main"

Rodney Knight
Greenhorn

Joined: Sep 12, 2007
Posts: 5
I am extremely new to Java.... I have type in some of the code examples I have and always get the following error:
Exception in thread "main" java.lang.NoClassDefFoundError

I googe this and got some things about setting my classpath and so on, but I really have no idea what that menas. Any help would be appreciated.

The code I have tried is:
class Shuffel1 {
public static void main (String []args) {
int x=3;
while (x>0) {
if(x>2) {
System.out.print("a");
}
x=x-1;
System.out.print("-");
if(x==2) {
System.out.print("b c");
}
if(x==1) {
System.out.print("d");
x=x-1;
}
}
}
}
marc weber
Sheriff

Joined: Aug 31, 2004
Posts: 11343

Welcome to JavaRanch!

I assume that this compiled without errors and you have a Shuffel1.class file in the directory. When you run the code, try using a classpath flag for the current directory (denoted by a dot ".").

>java -cp . Shuffel1

If this works, then the problem is you have a system CLASSPATH set and it does not include a dot for the current directory. The best approach is often to remove the system CLASSPATH entirely. But if it contains something you need, then just add a dot to it. (If you need help with this, be sure to tell us what operating system you're running.)


"We're kind of on the level of crossword puzzle writers... And no one ever goes to them and gives them an award." ~Joe Strummer
sscce.org
Rodney Knight
Greenhorn

Joined: Sep 12, 2007
Posts: 5
yes, Shuffel1.class is a file in the directory where I am trying to run the program from. That file is created after compiling, correct? The code compiles with no errors. I tried the "java -cp. Shuffle1", but that gave me:

Unrecognized option: -cp.
Could not create the Java virtual machine.

I am using Windows XP Professional 2002 SP2 and we installed the jdk1.6.0 download from Sun on Monday.
marc weber
Sheriff

Joined: Aug 31, 2004
Posts: 11343

Originally posted by Rodney Knight:
...I tried the "java -cp. Shuffle1"...

Make sure there's a space between -cp and the dot.

(Also, check the spelling: "Shuffle1" vs. "Shuffel1".)
[ September 12, 2007: Message edited by: marc weber ]
Tony Docherty
Bartender

Joined: Aug 07, 2007
Posts: 2316
    
  49
I tried the "java -cp. Shuffle1"
You need a space between the -cp and the fullstop. Also you've typed Suffle1 instead of Shuffel1
Rodney Knight
Greenhorn

Joined: Sep 12, 2007
Posts: 5
Originally posted by marc weber:

Make sure there's a space between -cp and the dot.

(Also, check the spelling: "Shuffle1" vs. "Shuffel1".)

[ September 12, 2007: Message edited by: marc weber ]


Thanks. That worked. So, since it worked, how do I fix the problem so that I don't always have to type the '-cp .'? I don't have a CLASSPATH in my envionmental variables. I typed the name wrong in the email only, it was the '-cp .' that worked.
[ September 12, 2007: Message edited by: Rodney Knight ]
marc weber
Sheriff

Joined: Aug 31, 2004
Posts: 11343

If there is no specified classpath, Java's default is to look in the current directory. So I would look again at your Environment variables.

In Windows, use Start > Settings > Control Panel > System. Under the "Advanced Tab" of System Properties, click on the button "Environment Variables." There should be "User variables" and "System variables." Check both of these for a CLASSPATH. If there it's there, post its complete value here and we'll go from there.
Jesper de Jong
Java Cowboy
Saloon Keeper

Joined: Aug 16, 2005
Posts: 14269
    
  21

Originally posted by Rodney Knight:
I don't have a CLASSPATH in my envionmental variables.

Are you sure? What do you see if you type the following command in a command prompt window:

echo %CLASSPATH%

If you don't have CLASSPATH set and you're using Java 5 or newer, then Java should automatically look in the current directory for classes and the "-cp ." should not be necessary. I suspect that you do have the CLASSPATH variable set somewhere, even though you think you haven't.


Java Beginners FAQ - JavaRanch SCJP FAQ - The Java Tutorial - Java SE 8 API documentation
Rodney Knight
Greenhorn

Joined: Sep 12, 2007
Posts: 5
Originally posted by Jesper Young:

Are you sure? What do you see if you type the following command in a command prompt window:

echo %CLASSPATH%

If you don't have CLASSPATH set and you're using Java 5 or newer, then Java should automatically look in the current directory for classes and the "-cp ." should not be necessary. I suspect that you do have the CLASSPATH variable set somewhere, even though you think you haven't.


This returned a path for a test folder I set on the desktop. Obviously I set it somehow, how would I correct that, or delete it, or reset it to the original setting?

Thanks for all the help.
marc weber
Sheriff

Joined: Aug 31, 2004
Posts: 11343

Originally posted by marc weber:
...In Windows, use Start > Settings > Control Panel > System. Under the "Advanced Tab" of System Properties, click on the button "Environment Variables." There should be "User variables" and "System variables." Check both of these for a CLASSPATH. If there it's there, post its complete value here and we'll go from there.
Rodney Knight
Greenhorn

Joined: Sep 12, 2007
Posts: 5
Originally posted by marc weber:
[QB][/QB]


OK. The classpath does not exist either in the User or System variables. The CLASSPATH that came from the echo command above yielded a directory that would have been set when I tried using NetBeans... that was the only place I ever typed that path in.

UPDATE::: I uninstalled NetBeans adn then Re-installed it and the CLASSPATH was reset. I did the ECHO and and it only return %CLASSPATH%. I ran my simple program and it ran w/o the '-cp .' in the command line.

I'll not use NetBeans until I understand more about what is going on.

Thanks for all the help.
[ September 12, 2007: Message edited by: Rodney Knight ]
marc weber
Sheriff

Joined: Aug 31, 2004
Posts: 11343

Originally posted by Rodney Knight:
...I'll not use NetBeans until I understand more about what is going on...

Yeah, IDEs (like NetBeans) can complicate things when you're starting. Glad to hear it's working!
 
Consider Paul's rocket mass heater.
 
subject: Exception in thread "main"