• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Java Compiler will nicht

Status
Für weitere Antworten geschlossen.

TheShadow

Neues Mitglied
Hallo,
Ich habe irgendwie ein Java Tutorial gefunden und dachte mir "Hey, dann lernste vielleicht mal ein bisschen Java". Daraufhin habe ich mir das Java Development Kit (jdk1.6.0) runtergeladen und installiert. In dem Tutorial wurde dann noch erklärt wie man testen kann, ob die Installation erfolgreich war. Man sollte dabei durch die MS-DOS Eingabe erstmal in den jdk1.6.0/bin Ordner wechseln und dann
Code:
c:\jdk1.6.0\bin>javac
eingeben. Wenn die Installation erfolgreich war würden ca. 15 Zeilen Text kommen. Der Text kam auch und so dachte ich, dass die Installation erfolgreich war.
Jetzt sollte man den PATH des Betriebssystems (in meinem Fall Windows) ermitteln. Auch dies lief gut, doch da kein jdk1.6.0 in der PATH-Variable war und ich nicht weiss, wie ich das ändern kann hieß es, dass ich meine Programm also nur um jdk1.6.0/bin Ordner speichern könnte. Damit habe ich erstmal kein Problem.
Nun fingen wir mit folgendem Programm an den Compiler zu testen:
Code:
class Hello
{
  public static void main ( String[] args )
  {
    System.out.println("Hello World!");
  }
}
Den Code habe ich als hello.java in dem jdk1.6.0/bin Ordner gespeichert. Druch die MS-DOS Eingabe bin ich dann in den Ordner gewechselt und habe mit
Code:
dir *.java
nach Javadateien gesucht. Meine hello.java hat er auch gefunden. Nun wollte ich das Programm compilieren. Das hab ich dann mit
Code:
javac hello.java
versucht.
Und was passiert?
Anstatt, dass er mir "Hello World!" ausgibt oder einen Error anzeigt kommt gar nichts. Daher habe ich auch keine Fehlermeldung bekommen, die mir sagen könnte, was ich falsch gemacht habe.
Habt ihr vielleicht eine Idee?
Ich bin für jede Hilfe dankbar!
Gruß
 
Werbung:
gibt was völlig einfacheres als deine kommandozeilenaktion. ich benutze den editor javaeditor, der sucht dich seine einstellungen größtenteils selber, wenn das richtige verzeichnis (zum jdk) angegeben ist, damit sparst du zeit und nerven ^^.

Nils aka XraYSoLo
 
Hallo,

wenn er den Fehler schon beim kompilieren hat, dann liegt es daran, das Deine Datei "hello.java" heißt und nicht "Hello.java".

Dateinamen müssen IMMER genauso benamst sein wie die Klasse.

Gruß Sven
 
Werbung:
Crash-Kurs in Java-Kommandozeile:

javac -> Java Compiler => Übersetzer von Java Source code in Java Byte code
java -> Java Runtime Startup => Wird zum Starten eines in Java Byte code vorliegenden Programms verwendet.

Ergo meine Empfehlungen:
1. Das Java-Lernbuch richtig lesen
2. Nachschauen: Nach javac hello.java hätte eine Hello.class im Verzeichnis erscheinen müssen.
3. Aufrufen: java -cp . Hello
startet das Programm

Gruß,
Jumper, the II.

PS: Der Parameter -verbose nach java und javac gibt dir gerne genauere Infos aus, was die Programme nebenher machen ... so ganz grob .... ;-)
 
Crash-Kurs in Java-Kommandozeile:

javac -> Java Compiler => Übersetzer von Java Source code in Java Byte code
java -> Java Runtime Startup => Wird zum Starten eines in Java Byte code vorliegenden Programms verwendet.

Ergo meine Empfehlungen:
1. Das Java-Lernbuch richtig lesen
2. Nachschauen: Nach javac hello.java hätte eine Hello.class im Verzeichnis erscheinen müssen.
3. Aufrufen: java -cp . Hello
startet das Programm

Gruß,
Jumper, the II.

PS: Der Parameter -verbose nach java und javac gibt dir gerne genauere Infos aus, was die Programme nebenher machen ... so ganz grob .... :wink:

Dein Ausflug in die Welt des Bytecodes und der VM hat gar nichts mit seinem Fehler zu tun...

Meine Empfehlung wäre, das man meinen Post vor Dir beachtet und einfach mal bei der Klasse (Datei) auf die Großschreibung achtet !

Denn ...

haben wir folgende Klasse "Hello" (in der Regel schreibt man Klassennamen am Anfang groß und geht dann über zur Kamelschreibweise)

Code:
public class Hello
{

    public static void main(String[] args)
    {
        System.out.println("Hello World");
    }

}
und wir versuchen die folgende Klasse (die wir ja fälschlicherweise als "hello.java" gespeichert haben) mit javac hello.java zu kompilieren, bekommen wir einen Fehler wiefolgt.

Code:
hello.java:1: class Hello is public, should be declared in a file named Hello.java
public class Hello
       ^
1 error
Die Fehlermeldung weißt uns als Entwickler schon darauf hin, das die Datei in eine Datei namens "Hello.java" umbenannt werden muss !!!

Ergo komme ich zu der völlig einfachen Schlussfolgerung

-> entweder wir nennen unsere Klasse einfach hello (unsauber, möchte ich von abraten)

also so ...

Code:
public class hello
{

    public static void main(String[] args)
    {
        System.out.println("Hello World");
    }

}
und können diese via "javac hello.java" kompilieren

oder

-> wir nennen die Datei einfach in Hello.java um ...

und kompilieren erneut mit "javac Hello.java" und siehe da es klappt.

Der Onkel
 
Hallo Onkelchen :-)

1. Er verwendet Windows ....
2. Er schrieb, dass javac KEINE AUSGABE gab ....
3. Er erwähnte nirgendwo, dass er das Programm aufgerufen hatte.
4. Meine Ein- und Ausgaben:
File: hello.java
Code:
class Hello
{
  public static void main ( String[] args )
  {
    System.out.println("Hello World!");
  }
}

Dos-Konsole:
Code:
 Java Development Kit - Sun - V1.5.0_10

D:\Temp\002>javac hello.java

D:\Temp\002>java -cp . Hello
Hello World!

D:\Temp\002>

Selbstverständlich ist es sinniger und Verständlicher, wenn man die Groß-/Kleinschreibung auch bei den Dateinamen für den Sourcecode (.java) verwendet, aber es ist nicht zwingend. Notwendig ist es nur dann, wenn der Compiler nicht in der Lage ist, mit bereits übersetzten Code angeforderte Klassen zu holen. Dann und genau Dann (!!) ist es zwingend. Im übrigen der Überzeugenste Grund, die Groß-/Kleinschreibung zu beachten.

Ach ja .. bei Deinem javac Hello.java kommt bei mir auch nichts als eine leere Zeile im DOS-Prompt ;-)

Gruß,
Jumper, the II.

/EDIT: Zum Genusse
Code:
D:\Temp\002>javac -verbose hello.java
[parsing started hello.java]
[parsing completed 328ms]
[search path for source files: [.]]
[search path for class files: [C:\Progs\Java\SDK\Sun1.5.0_10\jre\lib\rt.jar, C:\Progs\Java\SDK\Sun1.5.0_10\jre\lib\jsse.jar, C:\Progs\Java\SDK\Sun1.5.0_10\jre\lib\jce.jar, C:\Progs\Java\SDK\Sun1.5.0_10\jre\lib\charsets.jar, C:\Progs\Java\SDK\Sun1.5.0_10\jre\lib\ext\dnsns.jar, C:\Progs\Java\SDK\Sun1.5.0_10\jre\lib\ext\localedata.jar, C:\Progs\Java\SDK\Sun1.5.0_10\jre\lib\ext\sunjce_provider.jar, C:\Progs\Java\SDK\Sun1.5.0_10\jre\lib\ext\sunpkcs11.jar, .]]
[loading C:\Progs\Java\SDK\Sun1.5.0_10\jre\lib\rt.jar(java/lang/Object.class)]
[loading C:\Progs\Java\SDK\Sun1.5.0_10\jre\lib\rt.jar(java/lang/String.class)]
[checking Hello]
[loading C:\Progs\Java\SDK\Sun1.5.0_10\jre\lib\rt.jar(java/lang/System.class)]
[loading C:\Progs\Java\SDK\Sun1.5.0_10\jre\lib\rt.jar(java/io/PrintStream.class)]
[loading C:\Progs\Java\SDK\Sun1.5.0_10\jre\lib\rt.jar(java/io/FilterOutputStream.class)]
[loading C:\Progs\Java\SDK\Sun1.5.0_10\jre\lib\rt.jar(java/io/OutputStream.class)]
[wrote Hello.class]
[total 9125ms]

D:\Temp\002>
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben