java: .class ausführen ohne javaEditor

hagbard86

Aktives Mitglied
Thread Starter
Dabei seit
30.03.2005
Beiträge
4.131
Reaktionspunkte
50
Also ich fang grad mit dem programmieren an. :eek:

Da wir in der Schule nur Windows haben, schreib ich im mom auch mit Java Editor. (Aber das ist ja wohl egal ;)

Die Frage ist wie ich mein Programm jetzt auch außerhalb vom Java-Editor starten kann.

Wie mach ich aus meiner .java oder .class jetzt irgendwie was was mein mac frisst?

Also man soll halt draufklicken können und das Programm soll starten ohne Extra Programm oder sowas.

Hoffe es kommt rüber was ich überhaupt will.:rolleyes:
 
.java beinhaltet quelltext
.class beinhaltet bytecode, welcher von der VM ausgeführt wird

du kannst class dateien direkt aus dem terminal starten.

das was du suchst kriegst du auf 2 arten hin:

1. das ganze programm in ein .jar (ähnlich wie zip archiv bzw ist genau das...), das kannst dann mit nem doppelklick unter osx ausführen
2. bei developer.apple.com gibt irgendwo ne anleitung, wie man aus java programmen ein .app (das sind programme wie finder, safari, ...) macht.

und wie geht das jetzt?

die erste methode geht sehr praktisch mit eclipse. können aber andere IDEs sicher auch.

die zweite methode kannst du hier nachlesen: http://developer.apple.com/document...lopment/03-JavaDeployment/JavaDeployment.html
 
Zuletzt bearbeitet von einem Moderator:
Öffne ein Terminal (such danach mal im Spotlight), schreib rein "cd <leerzeichen>", ziehe den Ordner, wo die .class-Dateien drin sind, in das Terminalfenster.
Dann bist du im Ordner deiner Dateien.
Mit "java meineKlasse" (ohne das .class anzuhängen!) kannst du deine Programme starten.
Mit "javac meineKlasse.java" kannst du auch kompilieren.

Code:
Usage: java [-options] class [args...]
           (to execute a class)
 
Erstmal danke das von MichaelWhi klappt schonmal super :)

aber das mit dem .jar geht nicht. es kommt genau die Fehlermeldung die auf der Apple Seite steht.

Im Eclipse hab ich das alles gemacht
Creating a new JAR file

aber es klappt nicht.

macht das Eclipse das ganze zeug mit dem Manifest?

also wenn ich die von Eclipse erstellte .jar in .zip umbennen und entpacke
komm ich zu der
META-INF/MANIFEST.MF

in der MANIFEST.MF fehlt wie auf der apple Seite beschrieben die Angabe wo meine MainClass liegt?

jetzt dacht ich halt ich schreib das dazu
Main-Class: notenberechner (das ist die datei mit der MainClass)

und pack das ganze zeug wieder zu nem .zip und bennen es in .jar um aber die console sagt mir dann das das .jar kaputt ist.

wie mach ich das den nun?

:)
 
Zuletzt bearbeitet:
aaah ok, aber geht immer noch nicht

die console sagt das:
Code:
20.01.08 10:04:56 [0x0-0x2f42f4].com.apple.JarLauncher[5663] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

ich hab auch aber auch compiler errors kann das was ausmache, obwohl im Eclipse läuft das prog ohne Probleme.

da ich auch nicht sicher war mit der mainmethode hab ich mal die konsole angegben (das teil hab ich nicht geschrieben, ist dafür das das man was eintippen darf) aber dann spuckt die console (vom mac) das aus
Code:
20.01.08 10:08:00 [0x0-0x2f82f8].com.apple.JarLauncher[5677] Exception in thread "main" java.lang.OutOfMemoryError: Java heap space 
20.01.08 10:08:00 [0x0-0x2f82f8].com.apple.JarLauncher[5677]  at java.nio.HeapByteBuffer.<init>(HeapByteBuffer.java:39) 
20.01.08 10:08:00 [0x0-0x2f82f8].com.apple.JarLauncher[5677]  at java.nio.ByteBuffer.allocate(ByteBuffer.java:312) 
20.01.08 10:08:00 [0x0-0x2f82f8].com.apple.JarLauncher[5677]  at sun.nio.cs.StreamEncoder$CharsetSE.<init>(StreamEncoder.java:310) 
20.01.08 10:08:00 [0x0-0x2f82f8].com.apple.JarLauncher[5677]  at sun.nio.cs.StreamEncoder$CharsetSE.<init>(StreamEncoder.java:290) 
20.01.08 10:08:00 [0x0-0x2f82f8].com.apple.JarLauncher[5677]  at sun.nio.cs.StreamEncoder$CharsetSE.<init>(StreamEncoder.java:274) 
20.01.08 10:08:00 [0x0-0x2f82f8].com.apple.JarLauncher[5677]  at sun.nio.cs.StreamEncoder.forOutputStreamWriter(StreamEncoder.java:69) 
20.01.08 10:08:00 [0x0-0x2f82f8].com.apple.JarLauncher[5677]  at java.io.OutputStreamWriter.<init>(OutputStreamWriter.java:82) 
20.01.08 10:08:00 [0x0-0x2f82f8].com.apple.JarLauncher[5677]  at Konsole.prinT(Konsole.java:438) 
20.01.08 10:08:00 [0x0-0x2f82f8].com.apple.JarLauncher[5677]  at Konsole.print(Konsole.java:413) 
20.01.08 10:08:00 [0x0-0x2f82f8].com.apple.JarLauncher[5677]  at Konsole.readString(Konsole.java:227) 
20.01.08 10:08:00 [0x0-0x2f82f8].com.apple.JarLauncher[5677]  at Konsole.readString(Konsole.java:254) 
20.01.08 10:08:00 [0x0-0x2f82f8].com.apple.JarLauncher[5677]  at Konsole.readString(Konsole.java:254) 
20.01.08 10:08:00 [0x0-0x2f82f8].com.apple.JarLauncher[5677]  at Konsole.readString(Konsole.java:254) 
20.01.08 10:08:00 [0x0-0x2f82f8].com.apple.JarLauncher[5677]  at Konsole.readString(Konsole.java:254) 
20.01.08 10:08:00 [0x0-0x2f82f8].com.apple.JarLauncher[5677]  at Konsole.readString(Konsole.java:254) 
20.01.08 10:08:00 [0x0-0x2f82f8].com.apple.JarLauncher[5677]  at Konsole.readString(Konsole.java:254) 
20.01.08 10:08:00 [0x0-0x2f82f8].com.apple.JarLauncher[5677]  at Konsole.readString(Konsole.java:254) 
20.01.08 10:08:00 [0x0-0x2f82f8].com.apple.JarLauncher[5677]  at Konsole.readString(Konsole.java:254) 
20.01.08 10:08:00 [0x0-0x2f82f8].com.apple.JarLauncher[5677]  at Konsole.readString(Konsole.java:254) 
20.01.08 10:08:00 [0x0-0x2f82f8].com.apple.JarLauncher[5677]  at Konsole.readString(Konsole.java:254) 
20.01.08 10:08:00 [0x0-0x2f82f8].com.apple.JarLauncher[5677]  at Konsole.readString(Konsole.java:254) 
20.01.08 10:08:00 [0x0-0x2f82f8].com.apple.JarLauncher[5677]  at Konsole.readString(Konsole.java:254) 
20.01.08 10:08:00 [0x0-0x2f82f8].com.apple.JarLauncher[5677]  at Konsole.readString(Konsole.java:254) 
20.01.08 10:08:00 [0x0-0x2f82f8].com.apple.JarLauncher[5677]  at Konsole.readString(Konsole.java:254) 
20.01.08 10:08:00 [0x0-0x2f82f8].com.apple.JarLauncher[5677]  at Konsole.readString(Konsole.java:254) 
20.01.08 10:08:00 [0x0-0x2f82f8].com.apple.JarLauncher[5677]  at Konsole.readString(Konsole.java:254) 
20.01.08 10:08:00 [0x0-0x2f82f8].com.apple.JarLauncher[5677]  at Konsole.readString(Konsole.java:254) 
20.01.08 10:08:00 [0x0-0x2f82f8].com.apple.JarLauncher[5677]  at Konsole.readString(Konsole.java:254) 
20.01.08 10:08:00 [0x0-0x2f82f8].com.apple.JarLauncher[5677]  at Konsole.readString(Konsole.java:254) 
20.01.08 10:08:00 [0x0-0x2f82f8].com.apple.JarLauncher[5677]  at Konsole.readString(Konsole.java:254) 
20.01.08 10:08:00 [0x0-0x2f82f8].com.apple.JarLauncher[5677]  at Konsole.readString(Konsole.java:254) 
20.01.08 10:08:00 [0x0-0x2f82f8].com.apple.JarLauncher[5677]  at Konsole.readString(Konsole.java:254) 
20.01.08 10:09:24 [0x0-0x2fb2fb].com.apple.JarLauncher[5686] i386 /\ Mac OS X /\ 10.5.1 
20.01.08 10:09:24 [0x0-0x2fb2fb].com.apple.JarLauncher[5686] 1.5.0_13 /\ Apple Inc. /\ [url]http://www.apple.com/[/url]
 
Hm, ist das Teil denes Programms oder ein anderes? Jedenfalls scheint es einen Bug zu haben. Es allociert massenhaft Speicher im Heap mit dem Kreieren von Objekten und bricht mit "OutOfMemory" ab...

Zu deinem Problem: JARs sollten vom Tool "jar" erzeugt werden. Schau dazu bei Sun in der Java-Doku vorbei. Solange du aber nicht mehrere dutzend Klassen in deinem Programm hast oder es weiter geben willst, brauchst du das nicht. Wie schon erwähnt, kannst du das Programm auch mit

java Paketname.Klassenname

starten.

Bist du in einem anderen Verzeichnis oder benutzt du Bibliotheken, rufe

java -cp "PfadZurBibliothek:pfadZuDeinenKlassen" Klassenname

Noch etwas: Namen von Java-Klassen sollten laut Namenskonvention mit einem großen Buchstaben beginnen. (Variablen mit einem kleinen Buchstaben und Konstanten-Name bestehen nur aus großen Buchstaben). Üblich ist auch, bei zusammengesetzten Substantiven oder aus mehreren Wörtern bestehenden Namen diese im CamelCase darzustellen - zusammengerückt und jeder Anfangsbuchstabe ist groß.


Gruß Carsten
 
Zurück
Oben Unten