Tutorials
Apache Ant Build File HowTo
by admin on Mai.29, 2009, under Tutorials
Hier mal eine kleines HowTo für ein Ant Build File. Das ganze bezieht sich auf Eclipse. Das Build File sollte im Rootverzeichnis des Projekts liegen.
<project name=”Test” basedir=”.” default=”main”> </project>
- name dürfte klar sein.
- basedir ist wenn man einen Punkt hinzu nimmt das Rootverzeichnis. D.h. oberhalb von src Ordner.
- default bedeutet, das als default Task in diesem Fall das ‘main’ Target ausgeführt wird.
<property name=”src.dir” value=”src”/>
- property ist eine Variable die man später mit ${src.dir} aufrufen kann welche ein Wert hat.
<target name=”compile”>
<mkdir dir=”${classes.dir}”/>
<javac srcdir=”${src.dir}” destdir=”${classes.dir}”/>
</target>
Wie der Name schon sagt, ist das Target compile für die Kopilierung der Klassen zuständig. Damit Java kompiliert, muss der javac Tag in dem Task vorhanden sein. srcdir ist der Quellordner, in unserem Fall src. destdir ist der Zielorner wo die kompilierten Klassen sowie die Packet Struktur hinkopiert wird.
<target name=”jar” depends=”compile”>
<mkdir dir=”${jar.dir}”/>
<jar destfile=”${jar.dir}/${ant.project.name}.jar” basedir=”${classes.dir}”>
<manifest>
<attribute name=”Main-Class” value=”${main-class}”/>
</manifest>
</jar>
</target>
Das Target mit dem Namen jar erstellt ein jar File. depends bedeutet dass das Target compile vorher ausführt. Im jar Tag beginnt die eigentliche Erstellung des Files. destfile ist das output file. In unserem Fall wird der Projectname vom Anfang als jar Filename verwendet. basedir ist der Quellordner wo sich die kompilierten Klassen befinden.
Einen Überblick über alle Task gibt es auf der Ant Projekt Seite:
Socket Beispiele -> java.util.String split?
by admin on Apr.18, 2009, under Tutorials
Dank des schönen Wetters gibs erst nach längerer Zeit mal wieder einen Blog-Eintrag. Warum wird bei Java Socket Beispielen im Internet, immer alles mögliche in einen String gepackt (z.b. Datum, Namen usw). Dazwischen hat man dann immer diese schönen Trennzeichen wo dann immer gesplittet wird. Kaum eines der Beispiele zeigt, das Sockets auch noch andere Objekte verschicken können außer String
. Da es in Java leider nicht möglich ist, auf die Methoden einer Klasse zu zugreifen, ohne Cast, wenn diese in eine java.lang.Object initialisiert wurde (möglich, aber das entspricht nicht wirklich der Objektorientierung), muss die Klasse sowohl beim Sender als auch beim Empfänger verfügbar sein. Das Down-Casten vom java.lang.Object zu einer Klasse ist nur möglich wenn sich die Klasse sich in der Laufzeit befindet bzw. eingebunden wird. Hier mal ein Beispiel für den Client:
Socket socket = new Socket(host, port);
ObjectOutputStream outputStream = new ObjectOutputStream(socket.getOutputStream());
String hallo = “Hallo”;
outputStream.writeObject(hallo);
MeineKlasse klasse = new MeineKlasse();
outputStream.writeObject(klasse);
outputStream.writeObject(new Date());
outputStream.flush();
outputStream.close();
Der Server dazu sieht zum Beispiel so aus:
ServerSocket server = new ServerSocket(port);
Socket socket = server.accept();
ObjectInputStream inputStream = new ObjectInputStream(socket.getInputStream());
String hallo = (String) inputStream.readObject();
MeineKlasse klasse = (MeineKlasse) inputStream.readObject();
Date date = (Date) inputStream.readObject();
inputStream.close();
Das Casten der Objekte muss in der Reihenfolge passieren in welcher diese abgeschickt wurden.
MySQL Connection refused.
by admin on Apr.07, 2009, under Tutorials
Da ich schon länger nicht mehr so viel mit MySQL zu tun hatte, hab ich mich gefragt, warum mein Mysql-Server die Connection meiner Javaanwendung refused. Wollte mich gerade auf die Googlerecherche machen, als mir es wieder einfiel:
/etc/mysql/my.cnf
Da war doch was
bind-address
skip-external-locking