Java-Programme und Archive

Werbung
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.
Herunterladen