Unresolved compilation problem

Hallo hallo,
nachdem ich es geschafft habe “Hallo World” zu programmieren, wollte ich das 2. Beispiel im Buch bearbeiten…“Using a command-line argument”. So das habe ich in meinen Eclipse editor eingetippt genau wie im Buch:

{
   public static void main(String[] args)
   {
      System.out.print ("Hi, ");
      System.out.print(args [0]);
      System.out.println (".How are you?");
   }
}```


Jetzt kommt da doch tatsächlich eine Fehlermeldung:

Exception in thread “main” java.lang.Error: Unresolved compilation problem:

at UseArgument.main(youtube.java:3)




So irgendwelche Ideen? Habe das ganze UseArgument.java genannt (dachte ich zumindest... frage mich warum da noch youtube.java:3) steht...
"main" habe ich doch richtig geschrieben! Der editor unterlegt mir "main" grau aber ich kann nicht herausfinden wo der Fehler liegt. 
Oh man tut mir leid ist warscheinlich eine total bescheuerte Frage.. aber ich stehe gerade am Anfang und schon klappt nichts. Vielleicht hat das auch was mit einer Library zu tun die ich nicht habe oder so?
Vielen Dank für eure Hilfe!!

Das liegt daran, das dass array „args“ garnicht existiert. Es wird zwar eines beim ausführen übergeben, das ist jedoch nicht instanziiert, soll heißen, du bekommst ne „ArrayIndexOutOfBoundsException“ Weil du auf einen ungültigen Index zugreifen willst. Damit es befüllt ist muss du es soweit ich weiß über die Kommandozeile ausführen, schaue dazu hier:
Command-Line arguments
Syntax: Java Klassenname „argumente mit Leerzeichen“
Lass das zweite print weg und es klappt.

PS: Nutze doch die ```[ /Java] Tags :slight_smile:

Vielen Dank Schesam für die super schnelle Antwort! Werde das gleich mal versuchen! Gruss

@Schesam : Was du schreibst ist falsch…

Das args Array in der Main-Methode mag eventuell leer sein, das ist hier aber nicht das Problem.
Denn, wie du richtig schreibst bekommt man dann eine ArrayIndexOutOfBoundsException.
Diese sähe so aus:

Hi, Exception in thread „main“ java.lang.ArrayIndexOutOfBoundsException: 0
at UseArgument.main(UseArgument.java:6)

Der OT bekommt aber eine andere Exception

Exception in thread „main“ java.lang.Error: Unresolved compilation problem:

at UseArgument.main(youtube.java:3)

Das sagt 2 Dinge aus:

  1. Die Klasse UseArgument konnte nicht korrekt kompiliert werden
  2. Die Klasse UseArgument liegt nicht in der Datei UseArgument.java

Du hast wahrscheinlich nur die Klasse geändert, nicht aber den Dateinamen. In Java ist es aber so, dass der Dateiname einer Klasse mit dem Namen der Datei übereinstimmen muss.
Achte also mal darauf, ob Dateiname und Klassenname wirklich übereinstimmen.

möglich ist auch, dass die Datei youtube3.java zusätzlich existiert und nicht kopilierbaren Inhalt hat.

bye
TT

wo siehst du da dass es eine youtube3.java gäbe? Und solange diese nicht aufgerufen wird, dürfte der Fehler ebenfalls nicht auftreten. (Was in obigem Code offensichtlich nicht geschieht)

ich denke er hat die 3 der Zeilennummer der Exception in den Klassennamen gezogen.

Wie Sonecc schon schrieb. Datei youtube.java umbenennen, dann klappts auch mit dem kompilieren

[QUOTE=Sonecc]wo siehst du da dass es eine youtube3.java gäbe?[/QUOTE]Zu kleines Smartphone-Display + schlechtes Kurzzeitgedächnis…:reflect:

bye
TT

Ah. Ok. Dachte schon ich hätte was übersehen oder falsch verstanden. :slight_smile: