Ausführbare Java-Applikationen erzeugen Voraussetzung für ausführbare Java-Applikationen ist, dass es eine Klasse mit folgender Methode gibt: public static void main (String[] args) { ... } Anschließend muss die .java-Datei erfolgreich kompiliert worden sein, so dass es eine .class-Datei mit gleichem Namen gibt. Für die Ausführung der .class-Datei auf der Kommandozeile gibt es zwei Möglichkeiten: 1) Ausführung mit CLASSPATH Damit euer System die Java-Dateien auch findet, wird das Verzeichnis, in dem eure .class-Dateien sind, die Umgebungsvariable CLASSPATH eingetragen. Anleitung dazu: Windows Windows 9x: Die Datei C:\autoexec.bat mit einem Editor öffnen und am Ende die Zeile set classpath=meinVerzeichnis hinzufügen (mit vollständiger Pfadangabe; Namen, die Leerzeichen enthalten, in Anführungsstriche setzen; mehrere Verzeichnisse mit Semikolon trennen. Beispiel: set classpath=C:\meinVerzeichnis\klassen1;C:\"Mein Verzeichnis"\klassen2 Ein Neustart ist erforderlich, denn die autoexec.bat wird immer beim Hochfahren des Computers ausgeführt. Windows 2000: Systemsteuerung, System, Registerkarte "Erweitert". Dort kann man Umgebungsvariable erstellen und bearbeiten (ändern). Hinweise: 1. Bei der Ausführung von Java-Programmen funktioniert folgendes nicht: C:>java <Pfadangabe>\MeineKlasse (mit .class geht´s auch nicht) Aber beim Compilieren funktioniert: C:>javac <Pfadangabe>\MeineKlasse.java 2. Man kann die Umgebungsvariable CLASSPATH einfach auf folgende Weise setzen, das funktioniert aber nur bis zum nächsten Neustart: MS-DOS-Eingabeaufforderung, dort set classpath=C:\meinVerzeichnis Umgebungsvariable neu erstellen set classpath=%classpath%;C:\meinVerzeichnis Ein Verzeichnis hinzufügen Dann Programmausführung möglich: C:>java MeineKlasse (ohne ".class"!) Linux declare -x CLASSPATH=/home/<pfadangabe> declare -x CLASSPATH=$CLASSPATH:/home/<pfadangabe> Neu erstellen Pfad hinzufügen 2) Ausführbare Java-Applikationen in Archiven erzeugen und per Doppelklick starten Vorteil: Das ausführbare jar-Archiv kann in einem beliebigen Verzeichnis stehen, es muss keine Umgebungsvariable gesetzt werden. Das Programm ist auch auf jedem anderen Rechner, auf dem Java installiert ist, ohne weiteres lauffähig. C:>java -jar <Pfadangabe>\jarFileName.jar geht! a) Manifest-File erstellen (im gleichen Verzeichnis, wo MeineKlasse.class sich befindet): In einem Texteditor die Datei manifest.txt mit 1 Zeile Inhalt erzeugen: main-class: MeineKlasse (bitte nicht ".class" anfügen!) Auf jeden Fall muss diese eine Zeile mit einem Zeilenumbruch abgeschlossen werden! Dann die Manifest-Datei speichern. b) MS-DOS-Eingabeaufforderung bzw. Linux-Konsole: Ins Arbeitsverzeichnis (wo MeineKlasse.class und manifest.txt liegen) wechseln und: C:>jar cvmf manifest.txt jarFileName.jar MeineKlasse.class oder: C:>jar cvmf manifest.txt jarFileName.jar MeineKlasse.class MeineKlasse2.class -> dabei wird ein .jar-File erzeugt c) Dann Programmausführung möglich: C:>java -jar jarFileName.jar (Auch als .bat möglich: java -jar <Pfadangabe>\jarFileName.jar. Die .bat-Datei ist mit Doppelklick ausführbar!*) Nach jeder Änderung von MeineKlasse.java (und anschließendem Neukompilieren zu einer neuen Datei MeineKlasse.class) muss das .jar-File weggeworfen und neu erstellt werden. Auch dieser Vorgang kann durch ein .bat automatisiert werden. *= Auf Linux statt .bat eine Datei mit gleichem Inhalt und beliebigem Namen erzeugen und die Datei durch ein chmod a+x dateiname ausführbar machen. JAR-Anweisungen jar cvf jarFileName.jar datei1 datei2 .. jar tf jarFileName.jar jar xf jarFileName.jar datei1 java -jar jarFileName.jar Create Inhaltsverzeichnis Extrahieren Ausführen Anhang: Detaillierte Anleitung vom 7.12.2009; in Beispiel 2 wird GUI verwendet Beispiel 1 Quellcode der Java-Datei: public class HalloWelt { public static void main (String[] args) { System.out.println("Hallo Welt!"); //Warteschleife double d; for (int i=0; i<100000000; i++) { d = Math.random(); } //Fertig-Meldung System.out.println("fertig"); } } In BlueJ durch Compilieren eine Datei HalloWelt.class erzeugen; mit einem Texteditor eine Datei manifest.txt erzeugen: main-class: HalloWelt (Die Zeile im Editor mit Zeilenvorschub abschließen, so dass der Cursor in der 2. Zeile steht, dann erst "Speichern" klicken!) Beide Dateien in ein Verzeichnis kopieren, bei mir C:\test\test_manifest. Darauf achten, dass die PATH-Umgebungsvariable richtig gesetzt ist (Anleitung siehe http://www.flussufer.de/inflk -> Installation -> Windows -> Java-JDK Dann die Eingabeaufforderung öffnen und dort eingeben: cd c:\test\test_manifest jar cvmf manifest.txt meinJar.jar HalloWelt.class Dabei wird im Verzeichnis c:\test\test_manifest die Datei meinJar.jar erzeugt. Ausführen: Entweder in der Eingabeaufforderung eingeben: java -jar c:\test\test_manifest\meinJar.jar oder in einem Texteditor die Textdatei Hallo.bat mit folgender Zeile erzeugen: java -jar c:\test\test_manifest\meinJar.jar Die Datei Hallo.bat kann man mit einem Doppelklick ausführen. Das geht auch auf einem anderen Rechner. Probier´s aus: 1. Kopiere die Datei meinJar.jar auf einen anderen Rechner, dort ebenfalls in das Verzeichnis c:\test\test_manifest. Die jar-Datei ist dein Java-Programm; sie enthält den (ausführbaren) Code, also die class-Datei(en). [Beispiel für mehrere class-Dateien siehe unten.] 2. Starte die Datei Hallo.bat auf dem anderen Rechner per Doppelklick. [Voraussetzung auf dem anderen Rechner: Java ist installiert, und die PATH-Umgebungsvariable ist korrekt gesetzt.] Beispiel 2 mit einem GUI-Programm: ComputerErschiessen4. import java.awt.*; import java.awt.event.*; import java.awt.event.*; //für Listener public class ComputerErschiessen4 { // Ein Fenster für das Ganze, als oberstes Element static Frame win = new Frame("Warnung"); // Container für die Components erstellen static Panel labelbox = new Panel(); static Panel buttonbox = new Panel(); // Components erstellen static Label msgLabel = new Label(); static Button yesButton = new Button(); static Button noButton = new Button(); public static void main (String[] args) { // Eigenschaften setzen msgLabel.setText("Wollen Sie wirklich Ihren Computer erschießen?"); yesButton.setLabel("Ja"); noButton.setLabel("Nein"); // Layout Manager für die Container erzeugen und übergeben win.setLayout(new GridLayout(2, 1)); labelbox.setLayout(new FlowLayout()); buttonbox.setLayout(new FlowLayout()); // Components zu den Containern hinzufügen labelbox.add(msgLabel); buttonbox.add(yesButton); buttonbox.add(noButton); // Container zum Fenster hinzufügen win.add(labelbox); win.add(buttonbox); // Ereignisbehandlung hinzufügen win.addWindowListener(new WindowAdapter() { public void windowClosing (WindowEvent e) { System.exit(0); } } ); yesButton.addActionListener(new ActionListener() { public void actionPerformed (ActionEvent e){ win.setTitle("Computer erschießen"); msgLabel.setText("Na klar!"); } } ); noButton.addActionListener(new ActionListener() { public void actionPerformed (ActionEvent e){ win.setTitle("Computer erschießen"); msgLabel.setText("Lieber doch nicht!"); } } ); // Das Fenster dem Benutzer anzeigen win.pack(); win.show(); } } Beim Compilieren in BlueJ werden 4 class-Dateien erzeugt: ComputerErschiessen4.class ComputerErschiessen4$1.class ComputerErschiessen4$2.class ComputerErschiessen4$3.class [Erklärung: Der Code enthält 3 anonyme Klassen (ein WindowAdapter und zwei ActionListener)] Kopiere diese vier Dateien in das Verzeichnis c:\test\testCompEx Mit einem Texteditor eine Datei manifestCompEx.txt erzeugen: main-class: ComputerErschiessen4 (Die Zeile im Editor mit Zeilenvorschub abschließen, so dass der Cursor in der 2. Zeile steht, dann erst "Speichern" klicken!) Diesmal ist der Text für das mühsame Tippen in der Eingabeaufforderung wirklich zu lang. Erzeuge also mit dem Texteditor eine Datei compExJar.bat: cd c:\test\testCompEx jar cvmf manifestCompEx.txt compEx.jar ComputerErschiessen4.class ComputerErschiessen4$1.class ComputerErschiessen4$2.class ComputerErschiessen4$3.class (alle vier class-Dateien sind nacheinander aufgezählt, jeweils nur durch eine Leerstelle getrennt) Auf die Datei compExJar.bat doppelklicken; daraufhin wird im Verzeichnis c:\test\testCompEx die Datei compEx.jar erzeugt. Nun fehlt nur noch die ausführbare Windows-Datei compEx.bat. Sie wird mit einem Texteditor erzeugt und hat folgenden Inhalt: java -jar c:\test\testCompEx\compEx.jar Ein Doppelklick darauf startet das ComputerErschiessen-Programm.