Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[Newbie] Warum funktioniert dieses Programm nicht

0 views
Skip to first unread message

Markus Hochholzer

unread,
Aug 30, 2002, 2:10:26 PM8/30/02
to
Hallo zusammen,

ich habe vor zwei Tagen begonnen, mich mit Java zu beschäftigen. Dazu habe ich mir das
Buch Java2 aus dem Markt+Technik Verlag gekauft.
Wie in dem Buch beschrieben, habe ich auch das Entwicklerpaket von der Sun-Internetseite
runtergeladen und installiert.
Im Kapitel 2 folgt dann das erste Java-Programm, daß ich auch gleich abgetippt habe. hier
der Code:

class VolcanoRobot {
String status;
int speed;
float temperatur;

void checkTemperatur() {
if(temperatur > 660) {
status = "returning home";
speed = 5;
}
}

void showAttributes() {
System.out.println("Status :" + status);
System.out.println("Speed :" + speed);
System.out.println("Temperatur:" + temperatur);
}

public static void main(String[] arguments) {
VolcanoRobot dante = new VolcanoRobot();
dante.status = "exploring";
dante.speed = 2;
dante.temperatur = 510;

dante.showAttributes();
System.out.println("Erhöhe Geschwindigkeit auf 3.");
dante.speed = 3;
dante.showAttributes();
System.out.println("Erhöhe Temperatur auf 670.");
dante.temperatur = 670;
dante.showAttributes();
System.out.println("Überprüfe Temperatur.");
dante.checkTemperatur();
dante.showAttributes();
}
}

Wenn ich jetzt das Programm compiliere, erscheint keine Fehlermeldung.
Beim Programmaufruf mit "java VolcanoRobot" erscheinen aber jede Menge an Fehlermeldungen:

Exception in thread "main" java.lang.NoClassDefFoundError: volcanorobot (wrong name:
VolcanoRobot)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:509)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:246)
at java.net.URLClassLoader.access$100(URLClassLoader.java:54)
at java.net.URLClassLoader$1.run(URLClassLoader.java:193)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:186)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:265)
at java.lang.ClassLoader.loadClass(ClassLoader.java:262)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:322)

Was läuft hier schief? Ich denke, ich habe mich genau an die Anweisungen im Buch gehalten.
Hab auch den Code mindestens 6mal komplett mit verschiedenen Editoren abgetippt, jedoch
ohne durchschlagenden Erfolg.

Gruß Markus


Paul Ebermann

unread,
Aug 30, 2002, 2:22:42 PM8/30/02
to
"Markus Hochholzer" skribis:

[...]
> class VolcanoRobot {
[...]


> }
>
> Wenn ich jetzt das Programm compiliere, erscheint keine Fehlermeldung.
> Beim Programmaufruf mit "java VolcanoRobot" erscheinen aber jede Menge an Fehlermeldungen:

Keine Angst, das ist nur eine Meldung - mit der
genauen Angabe, wo sie passiert ist.

> Exception in thread "main" java.lang.NoClassDefFoundError: volcanorobot (wrong name:
> VolcanoRobot)

Das sieht so aus, als ob du

java volcanorobot

eingegeben hast, also nicht in der richtigen Groß-
und Kleinschreibung.

Paul

Peter Zangerl

unread,
Aug 30, 2002, 2:36:21 PM8/30/02
to

Markus Hochholzer schrieb

> Hallo zusammen,
>
> ich habe vor zwei Tagen begonnen, mich mit Java zu beschäftigen. Dazu habe
ich mir das
> Buch Java2 aus dem Markt+Technik Verlag gekauft.
> Wie in dem Buch beschrieben, habe ich auch das Entwicklerpaket von der
Sun-Internetseite
> runtergeladen und installiert.
> Im Kapitel 2 folgt dann das erste Java-Programm, daß ich auch gleich
abgetippt habe. hier
> der Code:
>
> class VolcanoRobot {
> String status;
> int speed;
> float temperatur;
>
[...]

Wenn du eine Klasse starten willst, dann musst du sie als public
deklarieren.

public class VolcanoRobot {
String status;
...


Peter

Markus Hochholzer

unread,
Aug 30, 2002, 2:40:33 PM8/30/02
to
>
> > Exception in thread "main" java.lang.NoClassDefFoundError: volcanorobot (wrong name:
> > VolcanoRobot)
>
> Das sieht so aus, als ob du
>
> java volcanorobot
>
> eingegeben hast, also nicht in der richtigen Groß-
> und Kleinschreibung.
>
Ja, das war/ist der Fehler. Hab dann wohl überlesen, daß Java Case sensitive ist.

Danke!


Markus Gsell

unread,
Aug 30, 2002, 3:03:25 PM8/30/02
to

"Peter Zangerl" <pe...@dataoberland.com> wrote in message
news:akodtt$1k85jj$1...@ID-126575.news.dfncis.de...
>
[...]

>
> Wenn du eine Klasse starten willst, dann musst du sie als public
> deklarieren.
>
> public class VolcanoRobot {
> String status;
> ...
>
>
> Peter
>

wenn die klasse keinen modifier hat ist sie implizit public


Peter Zangerl

unread,
Aug 30, 2002, 3:15:07 PM8/30/02
to

Markus Gsell schrieb

Wenn ich aber eine Klasse als Servlet laufen lasse und sie ist nicht public
bekomme ich die Meldung IllegalAccessException... vom Server.

Peter


Sönke Müller-Lund

unread,
Aug 30, 2002, 3:16:00 PM8/30/02
to
Moin Markus,

> wenn die klasse keinen modifier hat ist sie implizit public

nein, ist sie nicht.

Zugriff auf die Klasse ist nur innerhalb des aktuellen Package möglich.

Sönke

Paul Ebermann

unread,
Aug 30, 2002, 3:21:59 PM8/30/02
to
"Markus Gsell" skribis:

> "Peter Zangerl" <pe...@dataoberland.com> wrote [...]


>
> > Wenn du eine Klasse starten willst, dann musst du sie als public
> > deklarieren.
>

> wenn die klasse keinen modifier hat ist sie implizit public

Schön.
Da kann ich gleich zwei Aussagen auf einmal korrigieren:

(1) Eine Klasse kann auch gestartet werden, wenn sie nicht
public ist.

(2) Eine Klasse, die keinen Modifier hat, hat implizit
Package-Zugriff.
(Übrigens ist public bei Top-Level-Klassen und -Interfaces
der einzige erlaubte Modifier.)

Paul

0 new messages