Cocoon 2.1 + Netbeans 5.5 + JDK 1.6

Ich habe im Web keine Anleitung gefunden, wie man Cocoon 2.1 unter Netbeans 5.5 (mit JDK 1.6) kompiliert bekommt. Da es hierbei auch einige Fallstricke gibt, habe ich meinen Lösungsweg mal zusammengeschrieben und hier veröffentlicht.

FÜr dieses Howto braucht man neben Netbeans 5.5 die Cocoon-Sourcen. Ich habe zuletzt was mit Cocoon 1 gemacht und inzwischen ist es so, das man Cocoon selber übersetzen muss und es kein fertiges Binärpaket mehr gibt.

Zunächst wird das Cocoon-Archiv in einen Ordner entpackt. Dann wählt man in Netbeans Datei -> Neues Projekt -> Web -> Webanwendung mit existierendem Ant-Skript aus klickt auf Weiter. Als Pfad wählt man den Ordner aus, in den die Cocoon Sourcen entpackt wurden, also z.B. D:\projekte\cocoon-2.1.10. Der Ordner wird in der Ordnerauswahl mit einem speziellen Icon angezeigt.

Die Build-Skripte von Cocoon benötigen zum Laufen das ant-contrib.jar. Wenn es nicht installiert ist, äußert sich das in einer Fehlermeldung das ant #if nicht kennt (Siehe „building Cocoon with Netbeans 5.0“). Den Klassenpfad für ant ändert man in Netbeans über Extras -> Einstellungen -> Verschiedenes -> Ant -> Klassenpfad verwalten.

Für das Compilieren mit JDK 1.6 muss dann noch ein Patch angewendet werden, da die Datei ExcaliburDataSourceFactory.java einen Compiler-Fehler meldet.

Wenn man keine als deprecated Module in Cocoon eincompilieren will, sollte man die build.properties Datei im Cocoon Ordner anpassen:

# ---- Build Exclusions ------

exclude.deprecated=true

Nach diesen Schritten bringt das Compilieren von Cocoon noch die folgende Fehlermeldung:

java.lang.NoClassDefFoundError: org/apache/xpath/XPathAPI

Hier fehlen Ant nochmal ein paar jar Dateien, die sich im Ordner cocoon-2.1.10\lib\endorsed\ befinden.

Die JARs xalan-2.7.0.jar, xercesImpl-2.9.0.jar und xml-apis-1.3.04.jar kann man analog zum ant-contrib.jar eintragen.

Der Cleanbuild von Cocoon funktioniert jetzt. Als target kann man webapps oder war einstellen, jenachdem wie man weiterarbeiten will. Ich habe es bisher nicht geschafft das ganze im in Netbeans integrierten Tomcat auszuführen, ich habe Tomcat 5.5 seperat installiert.

Nun kanns mit Cocoon losgehen. Weitere Ressourcen finden sich im Cocoon Wiki, z.B. das BricksCms. Hilfe findet sich auch im Cocoon Forum.