Mobile Footer Layer

.class mit Java Virtual Maschine öffnen?

dragonabllz

Ensign
Registriert
Mai 2011
Beiträge
254
Hallo

Habe mri das Buch Java von Kopf bis Fuss gekauft und komme schon bei den ersten Seiten nicht weiter.
Ich habe eine kurzeQuellcode geschriebbne und diese mit .java abgespeichert. Dann habe ich diese .java Datei mit CMD und dem anweisung javac Pfad etc..... kompiliert und eine zweite Datei erhalten und zwar mit dem gleichen Namen nur ein .class dahinter. Soweit steht das auch alles im Buch nur dann steht im Buch: Führen Sie das Programm aus, indem Sie die Java Virtual Maschine (JVM) mit der Datei NAME.class starten. Die JVM übersetzt den Bytecode in etwas, as die zu Grunde liegende Plattform versteht, und führt Ihr Programm aus.
Aber wenn ich die .class Datei öffnen will kommt die Frage mit welchem Programm.
Wie soll ich jetzt weitermachen?

SDK hab ich schon installiert und PATH-Umgebungsvariabel habe ich mit dieser Anleitung auch schon gemacht: http://www.java-forum.org/einfuehru...umgebungsvariable-einstellen-windows-7-a.html
 
Wenn du xyz.class ausführen willst, einfach auf der Konsole zum Pfad navigieren und wie folgt aufrufen:
Code:
java xyz
 
Also du meinst mit CMD? Dann einfach reinschreiben java C:\Useres......\Desktop\xyz.class richtig? Komischerweise findet der nix obwohl ich alles richtig angegeben habe! Woran liegts? Also da steht: Hauptklasse pfad\xyz.class konnte nicht gefunden oder geladen werden
Ergänzung ()

Hier mal kurz den Quelltext den ich in TextPad eingegeben habe und mit .java abgespeichetr habe:

public class MeineErsteAnwendung{

public static void main (String[] args) {
System.out.println("Ich lebe!");
System.out.println("freu mich");
}
}
 
Zuletzt bearbeitet:
Versuchs doch mal mit einer JDE wie Eclipse oder Netbeans... da kannst du deine Programme coden und die werden gleich automatisch compiliert bzw. das Ergebnis in der integrierten Console ausgegeben.
 
Wie schon geschrieben muss der Aufruf " java MeinErsteAnwendung" lauten. Du darfst die .class Erweiterung NICHT mit angeben.
 
Wie schon geschrieben muss der Aufruf " java MeinErsteAnwendung" lauten. Du darfst die .class Erweiterung NICHT mit angeben.

Habs auch so ausprobiert kommt selbe Fehlermeldung. Ich habe bisschen in Google geforscht und gesehen das einer das Selbe Problem hatte und das gelöst hat indem er classpath gesetzt hat(was auch immer er meint)!
Ich habe doch schon PATH gesetzt was ist jetzt aufeinmal CLassPath? Hat das irgendeine Bedeutung?
Versuchs doch mal mit einer JDE wie Eclipse oder Netbeans... da kannst du deine Programme coden und die werden gleich automatisch compiliert bzw. das Ergebnis in der integrierten Console ausgegeben.

Ich muss laut dem Buch noch keine IDEs verwenden und nur mit Texteditoren arbeiten damit ich die Grundlagen verstehe, da ein IDE laut Buch vieles automatisiert und man den Hintergrund nicht kappiert
 
Ja, da hat das Buch recht.

Für die Grundlegenden Sachen ist es so erstmal besser, damit man auch versteht, was eigentlich im Hintergrund alles passiert.

Der Classpath ist der Path, wo der Java (der Compiler) nach Bibliotheken schaut (oder anderen Komponenten).
 
Wenn du public class MeineErsteAnwendung verwendest, sollte/muss das in der Datei MeineErsteAnwendung.java stehen. Nehmen wir an, die Datei liegt im Verzeichnis X. Dann öffnest du eine Eingabeaufforderung, wechselst in das Verzeichnis X (mit cd X). Dort führst du javac MeineErsteAnwendung.java aus. Vergewissere dich, dass keine Fehlermeldung ausgegeben wird, und, dass eine Datei MeineErsteAnwendung.class erzeugt wurde. Rufe dann java MeineErsteAnwendung (ohne Endung) auf. Das sollte klappen.
 
Setze noch die Benutzervariable JAVA_HOME (wahrscheinlich "C:\Program Files\Java\jdk1.7.0\") und die Systemvariable CLASSPATH (wahrscheinlich ".;C:\Program Files (x86)\Java\jre6\lib\ext\QTJava.zip;C\:Program Files\Java\jdk1.7.0\lib\"). Den Anfang der Pfade entsprechend deiner Installation anpassen.
 
Das gibts doch nicht, habe alles neu Formatiert, nochmal Java SDK installiert und es geht immer noch nicht!?
Habe Umgangsvariabeln gesetzt:
1.) CLASSPATH C:\Program Files\Java\jdk1.7.0_02\lib
2.) JAVA_HOME C:\Program Files\Java\jdk1.7.0_02
3.) PATH %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files\Java\jdk1.7.0_02\bin

Ich bin wie folgt vorgegangen: Einen Quelltext in TextPad eingegben:
public class Anwendung {

public static void main (String[] args) {
System.out.println("Hallo");
System.out.println("Wie Gehts?");
}
}

Diesen dann abgespeichert mit der Endung .java
Dann hab ich ausführen ->>CMD und javac C:\Users\MEINNAME\Desktop\Anwendung.java
Dann wurde die Datei anscheinend komplimiert und ich habe dann eine Anwendung.class erhalten.
Dann habe ich wieder ausführen-->>CMD und java C:\Users\MEINNAME\Desktop\Anwendung

Aber es kommt immer die Selbe Fehlermeldung, was kann ich machen? Bin Ratlos bitte helfen, ich kann mit dem Buch so nicht weiterarbeiten.

PS: Fehlermeldung lautet: "Fehler: Hauptklasse C:\Users\MEINNAME\Desktop\Anwendung konnte nicht gefunden oder geladen werden."

PS2: noch nebenbei Angemerkt: CLASSPATH und JAVA_HOME waren nicht in der Umgebungsvariabel drine, ich mussste es manuel erstellen, also auf neu und dann alles erstellen, wobei PATH schon vorher da war und ich nur die Pfad hinzugefügt habe
 
Zuletzt bearbeitet:
Versuche es doch einfach, indem du per "cd C:\Users\MEINNAME\Desktop\" erstmal in das Verzeichnis wechselst in dem die Datei liegt. Dann kompilierst du die mit "javac Anwendung.java" und führst sie mit "java Anwendung" aus.
 
dragonabllz schrieb:
Dann habe ich wieder ausführen-->>CMD und java C:\Users\MEINNAME\Desktop\Anwendung

Lies bitte noch einmal genau durch, was ich geschrieben habe. Du musst mit der Eingabeaufforderung in das Verzeichnis wechseln, in dem die Datei liegt. Das geht mit cd C:\Users\MEINNAME\Desktop.
 
Geh mal in die CMD und dann zum Verzeichnis, wo die .class liegt.

Dann gibst du ,,java -cp . Anwendung'' ein
 
Versuche es doch einfach, indem du per "cd C:\Users\MEINNAME\Desktop\" erstmal in das Verzeichnis wechselst in dem die Datei liegt. Dann kompilierst du die mit "javac Anwendung.java" und führst sie mit "java Anwendung" aus.

Kommt Selbe Fehlermeldung.
Geh mal in die CMD und dann zum Verzeichnis, wo die .class liegt.

Dann gibst du ,,java -cp . Anwendung'' ein

Wenn ich den Code java -cp . Anwendung angebe kommt eine ganze Liste von Informationen im CMD, aber die Datei wird nicht ausgeführt, den normalerweise müsste ja ein Fenster erscheinen und das was ich geschriben habe( hallo wie gehts?) erscheinen.
Hier ein Bild was nach diesem Code in der CMD kommt:
http://www.5load.de/img_102373_uyh.gif
 
Na geht doch, es klappt :) (Es ist doch normal das nicht ein neues Fenster aufgeht sondern dieses(Hallo Wie Gehts? in der CMD erscheint?)
Danke an alle die mir geholfen haben, aber mal ne Frage nebenbei, weshalb muss ich das auf diese Weise machen? Kann ich es nicht auf die "normale" Weise machen?
 
Nach meinem Verständnis ist es so:
Du musst der Java Virtual Machine im prinzip sagen, in welchem Ordner sie ausgeführt wird, also u.a. bei Laufzeit alle weiteren Klassen findet. Normalerweise ist das der Ordner von dem aus du den Befehl startest. indem du den Befehl
Code:
java -cp . Anwendung
benutzt, sagst du der JVM dass sie explizit den aktuellen Ordner verwenden soll (durch das -cp . ("." ist das aktuelle Verzeichnis)).


Zusatz::
Du erzeugst dir diesen Fehler im Prinzip selbst. Die JVM verwendet die Umgebungsvariable "classpath" um zu entscheiden, wo sie nach den ".class" dateien suchen soll. Normal existiert die Umgebungsvariable nicht(zumindest nicht öffentlich), was dazu führen sollte, dass der aktuelle Ordner durchsucht wird. Indem du die Umgebungsvariable angelegt hast versucht Java zwangsweise im angegebenen Ordner, in deinem Fall "C:\Program Files\Java\jdk1.7.0_02\lib" die .class Dateien zu finden, was es natürlich nicht kann. Deshalb sagt er dir dass die Hauptklasse nicht gefunden oder geladen werden kann.

Ich habe es eben selbst getestet, indem ich einen leeren Ordner unter C:\Ordner als Classpath eingetragen habe.

Wenn du deine Umgebungsvariable Classpath löschst, sollte auch das normale ausführen mit "java Anwendung" funktionieren (wenn du im richtigen Verzeichnis bist).
 
Zuletzt bearbeitet:
Ist schon richtig, dass es in der Konsole ausgegeben wird.

Nicht jedes Programm hat automatisch ein GUI (Graphic User Interface) und du führst es in der Konsole aus.... und System.out.println ist eine Konsolenausgabe.


Warum musst du es so machen... ganz einfach, du hast den irgendwie den class path falsch gesetzt oder so...

PATH %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\Syste m32\WindowsPowerShell\v1.0\;C:\Program Files\Java\jdk1.7.0_02\bin

Daraus machste

PATH %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\Syste m32\WindowsPowerShell\v1.0\;C:\Program Files\Java\jdk1.7.0_02\bin;.;

. ist immer das jetzige Verzeichnis und wenn du es im PATH mit angibst, sucht dann Java auch immer da, wo es ausgeführt wird. Dann musste demnächst nurnoch in das Verzeichnis gegen und
eingeben.


edit sagt: da du ja langsam Fortschritte machst, wirst du zwangsläufig auf eine IDE wechseln müssen.
Da du jetzt die Grundlagen(wie Java funktioniert) schon grob kannst (geh sie nochmal durch), kannste auch auf eine IDE umsteigen. :)
 
Zuletzt bearbeitet:
Zurück
Oben