Okt 29

Für den Fall, dass man die angelegten Dateien und Ordner bündeln möchte, gibt es die Möglichkeit, jar-Dateien zu erzeugen. Dies geht recht einfach mit

jar -cf <neuer Dateiname>.jar <Pfad, ab dem gebündelt werden soll>

also z.B.

C:\>jar -cf JarBeispiel.jar testpackage

Vorteil einer solchen Bündelung ist, dass man recht einfach alle Dateien von Computer zu Computer oder Server zu Server schieben kann. Mit

C:\>jar -tf JarBeispiel.jar

kann man sich die in der jar-Datei enthaltenen Dateien anschauen, in unserem Falle:

META-INF/
META-INF/MANIFEST.MF
testpackage/
testpackage/a/
testpackage/a/x.class
testpackage/a/x.java
testpackage/Beispiel.class
testpackage/Beispiel.java

Die Compilierung von Test.java, die ja auf die Klasse Beispiel zugreift, läuft dann folgendermaßen ab:

C:\>javac -classpath “C:\JarBeispiel.jar” Test.java oder

C:\>javac -classpath JarBeispiel.jar Test.java

Tagged with:
Okt 27

Heute möchte ich noch ein paar Besonderheiten der Packages und deren Compilierung/ Nutzung vorstellen:

statt des letzten Beispieles, in dem mit

import testpackage.*;

das Package importiert  und mit

Beispiel b = new Beispiel();

angelegt wurde kann auch ohne Import die Anlage aus einem Package so

testpackage.Beispiel b = new testpackage.Beispiel();

ablaufen.

Wichtig ist, wie bereits erwähnt, das das package im gleichnamigen Verzeichnis liegt.  Auch Sub-Packages sind möglich, z.b. das

package testpackage.scjp;

muss dann in package/scjp abgelegt sein.

Der Import kann dann analog zu den bekannten Packages wie java.io.*; mit

import testpackage.*;

import testpackage.scjp.*;

import testpackage.scjp.<Klassenname>;

erfolgen.

Der Pfad der package-Ordner muss immer immer entweder absolut zum Root-Verzeichnis (in unserem Beispiel C:/testpackage/scjp) oder zum relativ zum momentanen Verzeichnis (in unserem Beispiel testpackage/scjp) sein.

Tagged with:
Okt 25

Heute möchte ich erklähren, wie man packages compiliert und ausführt.

Gehen wir davon aus das der CLASSPATH noch im default-root-Verzeichnis (C:\) ist oder mit

set CLASSPATH=C:\

wieder auf C zurückgesetzt wurde. In C:\testpackage habe ich die Datei Beispiel.java abgelegt:

package testpackage;

public class Beispiel{

public Beispiel() {

System.out.println(“Beispiel angelegt”);

}

}

Wichtig ist in diesem Zusammenhang, dass der Ordner genauso wie das Package heisst.

In C:\ habe ich die Datei Test.java angelegt:

import testpackage.*;

public class Test{

public static void main (String args [ ]) {

Beispiel b = new Beispiel();

}

}

So, und jetzt zur Compilierung:

C:\>javac testpackage/Beispiel.java oder C:\testpackage>javac Beispiel.java

C:\>javac Test.java

C:\>java Test


Die Ausgabe ist : Beispiel angelegt

Tagged with:
Okt 23

den Classpath habe ich ja im Rahmen der Compilierung schonmal angesprochen. Heute möchte ich noch auf ein paar weitere Tricks und Tücken eingehen:

  • wird ein Klassenpfad angegeben, werden der angegebene Ordner und alle darunterliegenden Ordner durchsucht. Die darüberliegenden Ordner werden nicht beachtet.
  • mit set CLASSPATH=<Pfad> wird das default-Verzeichnis angegeben, in dem gesucht wird, falls kein Klassenpfad angegeben wurde
  • im aktuellen Verzeichnis wird mit ‘.’ gesucht, wenn dieses Verzeichniss nicht mit set CLASSPATH=. gesetzt wurde
  • es wird jeweils das erste gefundene class-File benutzt, sollten sich in weiteren (Unter-)Pfaden noch andere class-Dateien befinden, so werden diese nicht beachtet.
  • Die Suchreihenfolge ist streng nach der angegebenen Reihenfolge. -classpath C:/Angestellter:.:/C:/Buchhalter sucht als erstes im Pfad C:/Angestellter, dann im aktuellen Pfad und dann in C:/Buchhalter. Die Unterordner werden jeweils mit einbezogen, bevor der nächste Pfad geprüft wird
  • -classpath kann auf den meisten Maschinen mit -cp abgekürzt werden

Bitte beachtet, das ich hier die Unix-Konvention (da häufiger im SCJP abgefragt) verwende. In Windows muss ‘:’ durch ‘;’ ersetzt werden.

Tagged with:
Okt 22

Was ist der Output des folgenden Codes?

final byte a = 1;
final byte b = 2;
byte c = a-b;

System.out.println(c);

Antwort/ answer
Tagged with:
Okt 21

Bei dem Programmstart können Parameter übergeben werden, die das Programm aufnimmt:

java Test 1 2 3

hat zum Beispiel bei folgendem Code

public class Test{

public static void main(String args[]) {

for (String s:args)

System.out.println(s);

}

}

die Ausgabe

1
2
3

String args [ ] nimmt also die übergebenen Argumente auf.

Genauso valide Deklarationen von main sind

public static void main(String … x)

static public main (String [ ] y)

static public void main (String [ ] y)

Tagged with:
Okt 20

Wie ist die Ausgabe?

System.out.println(1+1+”"+1+1);

Antwort/ answer
Tagged with:
Okt 19

mit -D können Systemwerte für die Ausführung von Programmen vergeben werden:

java -DmeinWert=meins Test

Es wird also eine Systemvariable “meinWert” mit dem Inhalt “meins” und die Ausführung von Test angelegt. Es sind auch Inhalte mit Leerzeichen möglich (z.B. meins oder deins), hierfür muss dieser String in Anführungszeichen gesetzt werden:

java -DmeinWert=”meins oder deins” Test

Diese Systemvariablen können auch direkt im Code definiert werden.  Die verantwortliche Klasse hierfür ist import java.util.Properties:

Properties p = System.getProperties();
p.setProperty(“deinWert”,”deins”);
//Der Variable “deinWert” wird der Inhalt”deins” zugewiesen

Aufgelistet werden die Systemeigenschaften im Code mit

p.list(System.out);

Ein einzelner Wert kann mit

System.out.println( p.getProperty(“meinWert”));

abgefragt werden


Tagged with:
Okt 17

Wie bereits besprochen, wird ein Programm mit

java <Dateiname> oder java <Option>  <Dateiname> gestartet.

Eine Option im Zusammenhang mit Assertions ist die Option -ea, mit der Assertions angeschaltet und somit benutzt werden. Das Gegenstück hierzu ist -da mit der Assertions wieder ausgeschaltet werden.

Mit java -help können weitere Optionen abgefragt werden.

Tagged with:
Okt 15

Mit -d kann man den Pfadnamen angeben, wohin die zu erzeugende Class-Datei weggeschrieben werden soll:

C:\Buchhalter>javac -d ../Angestellter Buchhalter.java

Die Datei Buchhalter.class wird also zu C:/Angestellter und nicht zu C:/Buchhalter geschrieben.

Es ist aber auch möglich, von anderen Orten aus zu bennen wohin (hier: Ordner Angestellter) welche Datei (hier: Buchhalter.java aus dem Ordner Buchhalter) compiliert werden soll:

C:\>javac -d Angestellter Buchhalter/Buchhalter.java

Falls der Ziel-Ordner nicht existiert, wird dieses nicht angelegt, sondern ein CompilerFehler ausgegeben.

Tagged with:
preload preload preload
http://www.wikio.de Blog Top Liste - by TopBlogs.de Blogverzeichnis - Blog Verzeichnis bloggerei.de Bloggeramt.de Software
Webbhotell Top Blogs