2010-11-28 13 views
4

Ich hatte gehofft, dass dies einfacher wäre, weil ich einfach einen einfachen Testlauf mit Wicket in einem EAR auf GlassFish v3 machen möchte. Aber jetzt, dass ich die Wicket-Bibliotheken durch das NetBeans Plugin meiner IST ProjektWicket on GlassFish v3

  • Wicket-1.4.10.jar
  • Wicket-extensions-1.4.10.jar
  • slf4j-api-1.4 hinzugefügt .2.jar
  • slf4j-jdk14-1.4.2.jar

ich diesen Startfehler, wenn ich versuche, meine Web-Anwendung auf Glassfish zu starten:

exception

javax.servlet.ServletException: PWC1243: Filter execution threw an exception root cause

java.lang.NoClassDefFoundError: org/apache/velocity/app/Velocity

Benötigt Wicket Geschwindigkeit als Abhängigkeit? Ich überprüfte die Standardprojektstruktur, die von Maven erstellt wurde, und fand die Abhängigkeit nicht. Ich habe auch ein Wicket + EJB-Tutorial überprüft, das auch die Geschwindigkeit nicht erwähnt.

Nun, da ich Geschwindigkeit zu meinem Classpath hinzugefügt bekomme ich diesen Fehler:

http://jira.codehaus.org/browse/MSITE-286

Dies scheint im Jahr 2008 ein Problem gelöst werden (ich die neueste Version natürlich verwendet).

Irgendwelche Ideen, was ich falsch mache?

Dank im Voraus

Antwort

3

Wicket erfordern keine Geschwindigkeit, obwohl es mit ihm zusammenarbeiten kann, über eine Wicket-velocity.jar Bibliothek.

Der vollständige Stacktrace könnte helfen, herauszufinden, was ist versucht, es zu laden, obwohl Web-Anwendung Startprobleme können schmerzhaft sein zu diagnostizieren.

EDIT:

Der relevante Teil des stacktrace scheint

java.lang.NoClassDefFoundError: org/apache/velocity/app/Velocity 
     at org.apache.wicket.velocity.Initializer.init(Initializer.java:63) 
     at org.apache.wicket.Application.callInitializers(Application.java:843) 
     at org.apache.wicket.Application.initializeComponents(Application.java:678) 
     at org.apache.wicket.protocol.http.WicketFilter.init(WicketFilter.java:725) 

So ist die Wicket-Anwendung auf jeden Fall Geschwindigkeit zu laden versucht, und wir können nicht die Schuld Glasfischen. Ich werde zu einer Maschine wechseln, wo ich die Wicket-Quelle habe und wieder mit vielleicht weitere Ideen, aber es kommt mir vor, dass Ihre web.xml möglicherweise auch nützliche Informationen über die Wicket-Konfiguration haben.

Diagnose

Die web.xml ist nicht das Problem.

Das Problem ist, dass Application.callInitializers() Initialisierungen aus allen Wicket.properties-Dateien auf dem Klassenpfad lädt und versucht, die zugehörigen Komponenten zu initialisieren.

Sie haben wicket-velocity.jar auf Ihrem Klassenpfad, obwohl Sie keine Geschwindigkeit verwenden, und Wicket versucht, es zu initialisieren, da es eine Datei wicket.properties enthält, die den Aufruf an org.apache.wicket.velocity.Initializer.init() verursacht (der auch in Wicket- ist) velocity.jar). Diese Methode versucht, eine statische Init-Methode in Velocity aufzurufen, die nicht im Klassenpfad enthalten ist.

Wenn Sie wicket-velocity.jar von Ihrem Klassenpfad erhalten, sollte dieses Problem weggehen.

+0

hey, danke - hier ist der Stacktrace: http://pastebin.com/4wzZaRcf –

+0

Ich kopiere den generierten web.xml Inhalt in die web.xml innerhalb der WAR eingefügt: http://pastebin.com/fSuuUrzT - Allerdings ist die neue web.xml Version 2.5 statt 2.4 - vielleicht gibt es ein Problem damit. –

+0

yep - das hat das Problem behoben. Danke vielmals! –