• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Java-Source kompilieren

kann mir jemand sagen wie ich ne java-source unter 10.2 kompliere? Da gibts ja keine make-files sondern nur sowas wie *.java . Das kann ich aber nicht starten. Ich brauch ne *.jar. Bloß wie kompilier ich das und was brauch ich dafür für Pakete?
 
Hi

Sieh dir den Link an.

http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/jar.html
http://www.galileocomputing.de/openbook/javainsel7/javainsel_27_004.htm

cu
 
Da hatte ich mal für mich geschrieben:
Java

I. Compile:

gcj -C Program.java

II. Execute Program.class:

java Program

III. Create jar-files:

1. fastjar -c -f p.jar Program.class
2. Extract "MANIFEST.MF" from "p.jar".

3. Add line

Main-Class: Program

to extracted "MANIFEST.MF".

4. rm p.jar
5. fastjar -c -f p.jar Program.class -m MANIFEST.MF

Don't copy "MANIFEST.MF" manually into p.jar.

IV. Run jar-files:

java -jar p.jar

HTH (Bin aber kein großer Freund von Java :roll:)
 
stefgol schrieb:
kann mir jemand sagen wie ich ne java-source unter 10.2 kompliere? Da gibts ja keine make-files sondern nur sowas wie *.java . Das kann ich aber nicht starten. Ich brauch ne *.jar. Bloß wie kompilier ich das und was brauch ich dafür für Pakete?
Code:
gcj --main=hauptklasse -o program abc.java bcd.java hauptklasse.java efg.java etc...
./program
Wozu blöden Bytecode wenn man es auch direkt kompilieren kann!
 
jengelh schrieb:
Wozu blöden Bytecode wenn man es auch direkt kompilieren kann!

Z.B. wenn man platformunabhängig bleiben möchte oder wenn man Bibliotheken benötigt die GCJ nicht kennt... die Features von JDK 1.5 werden soviel ich weiß nicht unterstützt und auch im Vergleich zu JDK 1.4 gibt es noch "Lücken" ;)
 
stefgol schrieb:
kann mir jemand sagen wie ich ne java-source unter 10.2 kompliere? Da gibts ja keine make-files sondern nur sowas wie *.java . Das kann ich aber nicht starten. Ich brauch ne *.jar. Bloß wie kompilier ich das und was brauch ich dafür für Pakete?


Installiere dir

Code:
java-1_6_0-sun-devel

und
Code:
java-1_6_0-sun-devel


mit

javac <pfad-zur-*.java>

kansnt du dein java-Programm kompillieren

mit java <Klassenname> schickst du den Classloader auf die mission in der angegebenen Klasse ne statische MainMethode zu finden die ausgeführt wird. Achte darauf, dass der classpath gesetzt ist.

Gruß
Mani



PS: Als Hilfestellung http://www.galileocomputing.de/openbook/javainsel7/javainsel_01_006.htm#mj26a9cf4a9035991aff3cbf6b7c847889



PPS: Zum Thema JAR-Files:

Eine Jar-File ist im Prinzip nichts anderes als eine ZIp-file, die die kompillierten Klassen und eine Manifest-Datei enthält mit dem Verweis auf eine Klasse, die eine statische Main-Methode enthält und zu Beginn der Programmausführung ausgeführt werden soll. Eclipse und co haben schöne Assistenten zu Erstellung der *.jar-File.

Eine *.jar kannst du mit java -jar <pfad zur *.jar-Datei> aufrufen.
 
Alf72 schrieb:
Z.B. wenn man platformunabhängig bleiben möchte oder wenn man Bibliotheken benötigt die GCJ nicht kennt... die Features von JDK 1.5 werden soviel ich weiß nicht unterstützt und auch im Vergleich zu JDK 1.4 gibt es noch "Lücken" ;)
Grafik und der Enterprisekram ist mir egal, ansonsten vermisse ich nichts. Und klar werde JDK5 Features unterstützt... bspw. Generics (oder ist das JDK6? mir egal... Java ist ja sowieso nur zum Spielen in der Uni).
 
jengelh schrieb:
java ist ja sowieso nur zum Spielen in der Uni).

So wie c, c++, pascal, delphi, haskell, c# und co auch? oO

Für Desktop-Anwendungen mag java evt. nicht die beste Lösung sein, aber davon abgesehen ist Java im Unternehmensbereich eine feste Größe. Ich möchte sogar behaupten dass betriebliche Informationssysteme heutzutage fast nur noch mit Java entwickelt werden. Dann müsstest du dein universitäres Umfeld also dementsprechend sehr, sehr weit ausdehnen ;-)
 
Hehe... das Ihr da alle drauf anspringt 8)

Lasst ihn doch... dann bleiben mehr Projekte für mich :mrgreen:

Aber das ist ja nicht das eigentliche Thema des Threads... ich denke auch, dass das ursprüngliche Problem gelöst wurde... daher kann man hier denke ich zu machen... wer weiß was sonst noch alles passiert :wink:
 
Für Desktop-Anwendungen mag java evt. nicht die beste Lösung sein, aber davon abgesehen ist Java im Unternehmensbereich eine feste Größe.
Mag sein, aber es entsprach bislang nicht den Gedanken freier Software:

http://www.gnu.org/philosophy/java-trap.html

Oder ist Java inzwischen unter der GPL ?

Gruß
 
Hi,

bei Autos war das ja immer so, daß man entweder Schaltgetriebe hatte und damit mehr Kontrolle und schnelleres Anfahren oder Automatikgetriebe und damit mehr Bequemlichkeit, aber höheren Benzinverbrauch. Dann gab's da noch diese Halbautomatik: Das hatte irgendwie immer das schlechteste von beidem: Hohen Verbrauch und langsames Anfahren, aber trotzdem noch schalten müssen.

Java erinnert mich irgendwie immer an Halbautomatik :p: Interpretiert und langsam, aber trotzdem kompilieren müssen und noch nicht mal weniger Code schreiben müssen als in C++ (was ja sonst der große Vorteil von interpretierten (Skript-)Sprachen ist). Und dazu (zumindest bislang) sogar noch proprietär.
Keine Ahnung, warum Leute sowas benutzen :roll:.

Viele Grüße
 
abgdf schrieb:
Java erinnert mich irgendwie immer an Halbautomatik :p: Interpretiert und langsam, aber trotzdem kompilieren müssen und noch nicht mal weniger Code schreiben müssen als in C++ (was ja sonst der große Vorteil von interpretierten (Skript-)Sprachen ist). Und dazu (zumindest bislang) sogar noch proprietär.
Keine Ahnung, warum Leute sowas benutzen :roll:.

java ist nicht so langsam wie ihr immer behauptet :)

nur mal ein paar (nicht representative) Beispiele:
http://www.idiom.com/~zilla/Computer/javaCbenchmark.html
http://kano.net/javabench/
http://www.javaworld.com/jw-02-1998/jw-02-jperf.html

zum Problem java compilieren und ein jar erzeugen:
Code:
mkdir classes
javac -d classes `find . -name'*.java'`  (evtl noch mit -cp <liste der benötigten jars> ergänzen)
jar cf meinJAR.jar -C classes com
 
Oben