Nov 05

Assertions werden während des Programmstarts eingeschaltet mit

java -ea <Pfad/Dateiname>

oder

java -enableassertions <Pfad/Dateiname>

Ausgeschaltet werden assertions mit

java -da <Pfad/Dateiname>

oder

java – disableassertions <Pfad/Dateiname>

In älteren Versionen (1.3 und früher) durfte noch der Variablenname assert verwendet werden, z.B.

int assert = 1;

oder

int assert = prüfe();

if (assert > 2) { // … }

Dies ist nun nicht mehr möglich. Sollte aber aus irgendeinem Grunde so ein Code doch compiliert werden, kann dies mit

javac -source 1.3 <Dateiname>

Hierfür muss die entsprechende Version natürlich auch intialisiert werden.

Tagged with:
Nov 01

Heute noch ein paar Tricks und Tipps in Bezug auf packages:

Sollte der Klassenpfad recht lang sein, kann dieser auch in eine Umgebungsvariable gepackt werden:

C:\>set HOME=C:\Angestellter\B\x

Diesse Umgebungsvariable kann auch anstatt des üblichen Klassenpfades

C:\>javac -classpath C:\Angestellter\B\x Test.java

angegeben werden:

C:\>javac -classpath $HOME Test.java

Es können aber auch Jar-Files in das generelle java-library-Verzeichnis …/jre/lib/ext kopiert werden:

C:\Programme\Java\jdk1.6.0_17\jre\lib\ext> cp C:/JarBeispiel.jar .

Vorteil ist, dass hier die JVM während des Compilierens/ dem Programmstart dort reinschaut, und deswegen kein classpath angegeben werden muss.

Tagged with:
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 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:
Okt 13

Wie bereits erläutert, kann auch ein Pfad angegeben werden, in dem sich die Klasse befindet.

C:\Angestellter – in diesem Pfad (Datei:Angestellter.java) befindet sich folgender Code:

public class Angestellter{ public static void main(String args[]) { Buchhalter b = new Buchhalter(); } }

C:\Buchhalter – in diesem Pfad (Datei: Buchhalter.java) befndet sich folgender Code:

public class Buchhalter{ public Buchhalter () { System.out.println(“Buchhalter angelegt”);}}

Gehen wir nun zu C:\Buchhalter und kompilieren mit

javac Buchhalter.java

die Datei und erhalten ein Class-File.

In C:\Angestellter muss das spätere Programm auf die von Buchhalter.java erzeugte Class-Datei zugreifen. Aus diesem Grunde wird dem Compiler mitgeteilt, bei der Compilierung noch in C:\Buchhalter hineinzuschauen und dessen Class-Datei miteinzubinden:

javac -classpath “C:\Buchhalter” Angestellter.java

Da der Classpath bei der Compilierung nur überprüft, ob die Methoden wirklich existieren und die Methodenaufrufe zusammen passen, muss bei der Ausführung nochmals der Klassenpfad mitgegeben werden.

Hier gibt es aber noch eine kleine Besonderheit; es soll ja in zwei Klassenpfade geschaut werden; den momentanen (“.”) und den von Buchhalter. Ist der momentane Pfad nicht mit

set CLASSPATH=.

oder

set CLASSPATH=C:\Angestellter

gesetzt, muss dieser beim Aufruf genannt werden. Mehrere Klassenpfade werden durch “;” voneinander getrennt:

java -classpath “.;C:\Buchhalter” Angestellter

Bei Unix-basierten Systemen wird statt ‘;’ ‘:” und statt ‘\’ ‘/’ vewendet

Tagged with:
Okt 09

Da ich gemerkt habe, dass ich beim Thema Assertions mehr auf die Compilierung eingehen muss, ziehe ich dieses Thema erst einmal vor, um die Grundlagen für die weiteren Erklärungen im Bereich Assertions zu schaffen.

Mit Compilierung meine ich nicht die bequeme Art über Eclipse oder ein anderes Tool, sondern die gute alte DOS-Compilierung, die im SCJP immer noch abgefragt wird.

Grundsätzlich wird der Code direkt in einer .java – Datei (z.B. Test.java) abgespeichert und mit

javac Test.java

compiliert.

Gestartet wird die hiermit erzeugte Datei mit

java Test

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