Archiv für den Monat: März 2010

Beim Aufruf von run-app unter OpenJDK 6 und OpenJDK 7 kommt es zu Problemen mit Grails

Beim Aufruf von run-app für Grails aus der SpringSource Tools Suite (STS) habe ich auf einmal die folgende Fehlermeldung erhalten:

Error executing script RunApp: the number of constructors during runtime and compile time for java.lang.ClassLoader do not match. Expected 2 but got 3

Das Problem tritt nur mit OpenJDK auf. Stellt man den JDK auf die Sun-Version, so verschwindet der Fehler wieder und Grails funktioniert wieder. Die STS war bei der letzten Installation so frei sich die openjdk-Variante als JRE unter „Preferences -> Installed JREs“ zu wählen und nicht die von Sun.

Fehler behoben und weiter geht es!

Mit aspell eigene Wörterbücher erstellen und automatisch nutzen

Wenn man über ein Fachthema schreiben will, so fehlen in Wörterbüchern der Programme die notwendigen Fachbegriffe. Diese Fachbegriffe wollte ich zentral sammeln und in allen Programmen benutzen, die auch aspell verwenden. Darunter zählt z.B. OpenOffice, Kile, Eclipse Latex Plugin Texlipse, Evolution und viele andere.

Das erstellen eigener Wörterbücher ist in der Zimbra Wiki gut beschrieben. Ich habe den Aufruf etwas angepasst, da ich die Wörterbücher bei mir im Home-Verzeichnis haben wollte und damit auf andere Systeme leicht übertragbar. Auch habe ich mir das Erstellen neuer Wörterbücher etwas vereinfacht, wie es im Folgenden erklärt wird.

Zuerst habe ich mir einen Ordner für die Wörterbücher angelegt:

mkdir ~/documents/dicitonaries

Dieser Ordner soll alle meine angepassten Wörterbücher enthalten und sehr einfach eingebunden werden können.

Um neue Wörterbücher ohne Administratorrechte hinzufügen zu können, habe ich eine multi-Datei ( eine Art include-Datei) „~/documents/dicitonaries/my-de.multi“ mit dem folgenden Inhalt angelegt:

# Dateiname: ~/documents/dicitonaries/my-de.multi
include /home/myuser/documents/dicitonaries/informatik.rws

Damit meine multi-Datei auch vom aspell ohne Parameter benutzt wird, musste ich sie im Systemordner in eine passende multi-Datei eintragen. Da mein Wörterbuch für Deutsch gedacht ist, habe ich den folgenden Eintrag in die Datei „/usr/lib/aspell/de.multi“ unter Linux und auf dem Mac (installiert mit MacPorts) „/opt/local/share/aspell/de.multi“ gemacht:

include /home/myuser/documents/dicitonaries/my-de.multi

Wenn „include“ nicht funktioniert, dann einfach „add“ probieren:

add /home/myuser/documents/dicitonaries/my-de.multi

Damit die Wörterbücher sehr einfach zu editieren sind, habe ich für jedes Wörterbuch eine Textdatei mit eigenem Namen angelegt im dictionaries-Ordner angelegt. Hier ist ein Beispiel für Informatik (Dateiname informatik.txt):

# ~/documents/dicitonaries/informatik.txt
Informationssicherheit
schützenswert

Der folgende Befehl macht aus der Textdatei ein Wörterbuch-Datei:

aspell --encoding=UTF-8 --lang=de create master ./masterarbeit.rws < masterarbeit.txt

Achtung: Es ist wichtig bei dem Aufruf einen Pfad für die rws-Datei anzugeben, sonst wird der Aufruf nicht funktionieren.

Hinweis: Wer wie ich UTF-8 benutzt, sollte das Encoding beim Aufruf setzen. Aspell verwendet nicht die Systemkodierung und deswegen kommt es zu Problemen mit Umlauten. Ohne das Encoding kommen folgende Fehler bei Verwendung von Umlauten in der Textdabei beim Aufruf der Umwandlung:

Warning: The word "schützenswert" is invalid. The character '¼' (U+BC) may not appear in the middle of a word. Skipping word.

PS: Danke an Matthias für den Tipp mit den eigenen Wörterbüchern

Hoffe damit auch jemanden geholfen zu habe und freue mich über Kommentare.

CMS System Weceem basierend auf dem Grails Framework im Apache Tomcat (Catalina) Servlet Container deployen

Ich habe mir etwas Zeit genommen, um Weceem  auszuprobieren. Weceem ist ein Content Management System (CMS) basierend auf dem Grails Framework. Es kann standalone als Applikation oder als Plugin in einer Applikation betrieben werden. Im folgenden beschreibe ich, wie Weceem standalone in Apache Tomcat benutzen werden kann. Es existiert bereits eine Anleitung auf der Weceem Webseite, aber sie ist sehr spartanisch und deckt einige Details nicht ab. Vor allem fehlt eine Fehlerbeschreibung oder Tipps, falls die Installation nicht erfolgreich verläuft.

Voraussetzungen

Für die Installation werden die folgenden Softwarekomponenten benötigt:

  • Java Version 1.6 (6.0)  oder höher
  • Ein Servlet Container wie Apache Tomcat (Catalina), Jetty oder höher
  • Ein Datenbankserver mit Hibernate Unterstützung wie MySQL oder Postgresql
  • Webceem Standalone Applikation in einer War-Datei

Einrichtung vor dem Deployment (Weceem Version 0.8):

Die folgenden Variablen müssen im System (ausführenden Benutzer) gesetzt sein  (Beispiel für Ubuntu 9.X):


export JAVA_PATH=/usr/lib/jvm/java-6-sun/
export CATALINHA_HOME=/opt/tomcat-6.0.26

Weceem setzt Lucene für die Suche ein. Lucene benötigt einen Ordner für die Index Dateien. Dafür muss der folgende Ordner für den Tomcat-Benutzer Schreibrechte besitzen:


/var/cache/weceem

Die Datenbank-Einstellungen in der Standalone Version sind nicht in dem War-Paket enthalten, da die Einstellungen für jede Installation anders sind. Für MySQL sieht die Datei mit den Einstellungen wie folgt aus (Dateiname z.B. $CATALINA_HOME/conf/weceem.properties):


dataSource.pooled=true
dataSource.driverClassName=com.mysql.jdbc.Driver
dataSource.username=YOURWECEEMUSER
dataSource.password= YOURWECEEMPASSWORD
dataSource.dbCreate=update
dataSource.url=jdbc:mysql://localhost:3306/weceem

Damit Die Konfigurationsdatei für die Datenbank von der Webanwendung gefunden wird, muss sie über die Parametrisierung des Servlet Containers gesetzt werden. Dafür habe ich die Variable CATALINA_OPTS verwendet. Ich habe das Startskript des Tomcats direkt für Testzwecke verändert. Das Startskript ist hier zu finden: $CATALINA_HOME/bin/catalina.sh . Der Eintrag sieht wie folgt aus:


CATALINA_OPTS="-Dweceem.config.location=file:///$CATALINA_HOME/conf/weceem.properties"

Weceem enthält keine Datenbank-Connectoren, da sie meistens unter einer anderen Lizenz stehen. Dieser muss dem Servlet Container (hier Apache Tomcat) hinzugefügt werden. Die Jar-Datei des MySQL-Connectors muss entweder in den Java CLASSPATH Variable aufgenommen werden oder in den Ordner $CATALINA_HOME/lib/ kopiert werden.

Bevor die Anwendung deployt werden kann, müssen vorab die JAVA-Speichereinstellungen angepasst werden. Das kann wieder in dem Catalina Startskript $CATALINA_HOME/bin/catalina.sh geschehen. Das habe ich durch das Hinzufügen der folgenden Variable gemacht:


JAVA_OPTS="-server -Xmx512m -Xms512m -XX:MaxPermSize=256m"

Damit sollten alle notwendigen Einstellungen gesetzt sein. Jetzt muss die War-Datei von Weceem richtig benannt und in den Order $CATALINA_HOME/webapps/ kopiert werden. Das Deployen erledigt Tomcat selber. Nach dem Start des Servlets Containers sollte die Anwendung unter dem folgenden Pfad zu erreichen sein. Für den Test habe ich die Anwendung (War-Datei name weceem.war) weceem genannt:

http://localhost:8080/weceem/

Die Administration der Seite ist unter dem „admin/“ Pfad zu erreichen. Benutzername und Passwort sind bei der ersten Ausführung beide auf „admin“ gesetzt. Bei mir sieht der Pfad wie folgt aus:

http://localhost:8080/weceem/admin/

Probleme

Meine ersten Versuche waren nicht so erfolgreich. Deswegen sollte bei Probleme, in dem Log-Ordner $CATALINA_HOME/log in der Datei catalina.log nach Fehlermeldungen Ausschau gehalten werden. Die Java-Stacktraces zeigen meistens ziemlich schnell, wo der Fehler liegt.

Quellen und Hinweise:

… Wenn ich Zeit finde, dann übersetzte ich die ganze Geschichte auf Englisch.

Über Texlipse unter Eclipse deutsche Anführungszeichen bei der Eingabe automatisch verwenden

Ich suche jedes mal bei einem neuen Texlipse Projekt unter Eclipse, wo ich die Art der Anführungszeichen auf Deutsch umstellen kann. Natürlich geht die Suche zuerst in den Einstellungen von Texlipse los, da ich es von Kile her kenne. In Kile sind sie unter:

  • Englisch: Settings -> Configure Kile -> Latex -> General
  • Deutsch: Einstellungen -> Kile konfigurieren -> Latex -> Allgemein

zu finden. Eigentlich logisch oder doch nicht? Bei Eclipse sind sie unter Projekteigenschaften.

Voreingestellt bei neuen Projekten von Texlipse unter Eclipse sind englische Anführungszeichen, die sich immer oben befinden. Darum muss man logischerweise unter Projekteinstellungen suchen. Dort findet man dann auch ganz schnell unter

  • Englisch: Project -> Properties -> Latex Project Properties

ganz unten die Spracheinstellungen (Language Settings). Tippt man dort anstatt „en“ „de“ ein und speichert die Einstellungen, so verwendet Texlipse bei der Eingabe die deutsche Art der Anführungszeichen. Das gilt auch für alle anderen länderspezifischen Eingaben.

Ich hoffe diese kleine Gedächtnisstütze hilft nicht nur mir, wenn die sprachspezifischen Symbole wieder mal benötigt werden.

Ich freue mich über Kommentare von Mitleidenden! 🙂

Weitere Informationen: