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.
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:
Die Klasse UseArgument konnte nicht korrekt kompiliert werden
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.
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)