Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

Javakurs2006/Probleme: Unterschied zwischen den Versionen

(echte Fehlermeldung aufdgenommen)
(besser strukturiert)
Zeile 1: Zeile 1:
== Zwei häufige Probleme mit java ==
+
== Einige häufige Probleme mit java ==
 +
 
 +
=== Klassen werden nicht gefunden ===
 
beim compilieren (von X.java, dass ein Obkjekt Y aus Y.class/Y.java einbinden will:
 
beim compilieren (von X.java, dass ein Obkjekt Y aus Y.class/Y.java einbinden will:
 
  X.java:5: cannot resolve symbol
 
  X.java:5: cannot resolve symbol
Zeile 16: Zeile 18:
 
:Der Fehler bedeutet, dass die Shell-Variable CLASSPATH gesetzt ist. Das hat zur Folge das Java den Standardwert "." (das Verzeichnis in dem man gerade ist) nicht mehr in den CLASSPATH aufnimmt und diese Fehlermeldung auflöst.
 
:Der Fehler bedeutet, dass die Shell-Variable CLASSPATH gesetzt ist. Das hat zur Folge das Java den Standardwert "." (das Verzeichnis in dem man gerade ist) nicht mehr in den CLASSPATH aufnimmt und diese Fehlermeldung auflöst.
  
 +
=== Das Katzenproblem beim Aufruf ===
  
 
  Exception in thread "main" java.lang.NoClassDefFoundError:KlassennameDenIhrGeradeKompiliertHabt/class
 
  Exception in thread "main" java.lang.NoClassDefFoundError:KlassennameDenIhrGeradeKompiliertHabt/class
 
:dann habt ihr das Programm mit "java KlassennameDenIhrGeradeKompiliertHabt.class" aufgerufen, was falsch ist. Man darf hier das "class" nicht an den Befehl anhängen.
 
:dann habt ihr das Programm mit "java KlassennameDenIhrGeradeKompiliertHabt.class" aufgerufen, was falsch ist. Man darf hier das "class" nicht an den Befehl anhängen.
 +
 +
=== unchecked or unsafe operations===
  
 
  Note: Test.java uses unchecked or unsafe operations.
 
  Note: Test.java uses unchecked or unsafe operations.

Version vom 4. April 2006, 09:46 Uhr

Einige häufige Probleme mit java

Klassen werden nicht gefunden

beim compilieren (von X.java, dass ein Obkjekt Y aus Y.class/Y.java einbinden will:

X.java:5: cannot resolve symbol
symbol  : class Y  
location: class X
    Y y = new Y();
    ^

oder zur Laufzeit:

Exception in thread "main" java.lang.NoClassDefFoundError:KlassennameDenIhrGeradeKompiliertHabt
Mann kann das Problem auf zwei Arten lösen:
  • man schreibt "java -cp . Klasse" anstatt nur "java Klasse" um sie Auszuführen
  • verwendet man die bash: schreibt man export CLASSPATH=$CLASSPATH:. entweder in jeder shell einmal oder in die .bashrc eintragen und die shell mit exec bash neu starten.
  • verwendet man die tcsh: schreibt man setenv CLASSPATH ".:$CLASSPATH" entweder in jeder shell oder einmal in der .cshrc eintragen und die shell mit tcsh neu starten.
Der Fehler bedeutet, dass die Shell-Variable CLASSPATH gesetzt ist. Das hat zur Folge das Java den Standardwert "." (das Verzeichnis in dem man gerade ist) nicht mehr in den CLASSPATH aufnimmt und diese Fehlermeldung auflöst.

Das Katzenproblem beim Aufruf

Exception in thread "main" java.lang.NoClassDefFoundError:KlassennameDenIhrGeradeKompiliertHabt/class
dann habt ihr das Programm mit "java KlassennameDenIhrGeradeKompiliertHabt.class" aufgerufen, was falsch ist. Man darf hier das "class" nicht an den Befehl anhängen.

unchecked or unsafe operations

Note: Test.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Dann könnt ihr die entweder ignorieren, oder aber ihr loggt euch nicht auf Solaris 10, sondern auf Servern mit Solaris 9 ein. Wie das geht steht auf dem Anmeldebildschirm!


<- zurück zur Startseite