GlassFish v3上的Wicket

时间:2010-11-28 10:38:48

标签: java glassfish wicket glassfish-3

我希望这会更容易,因为我只想在GlassFish v3上的EAR中使用Wicket进行简单的测试。但是现在我已经通过netbeans插件将Wicket库添加到我的WAR项目

  • 检票1.4.10.jar
  • 检票的扩展-1.4.10.jar
  • SLF4J-API-1.4.2.jar
  • SLF4J-jdk14-1.4.2.jar

当我尝试在GlassFish上启动我的Web应用程序时出现此启动错误:

  

例外

     

javax.servlet.ServletException:PWC1243:过滤器执行引发异常   根本原因

     

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

Wicket是否需要速度作为依赖?我检查了maven创建的默认项目结构,并没有找到依赖项。我还检查了一个没有提及速度的wicket + ejb教程。

现在我将速度添加到我的类路径中,我收到了这个错误:

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

这似乎是2008年解决的问题(我使用了最新版本的课程)。

关于我做错的任何想法?

提前致谢

1 个答案:

答案 0 :(得分:3)

Wicket不需要速度,但它可以通过wicket-velocity.jar库与它协作。

完整的堆栈跟踪可能有助于发现 尝试加载它的内容,尽管Web应用程序启动问题可能很难诊断。

修改

stacktrace的相关部分似乎是

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)

因此wicket应用程序肯定是在尝试加载速度,我们不能责怪glassfish。我将切换到一个我有wicket源的机器并带回可能更多的想法,但我发现你的web.xml也可能有关于wicket配置的有用信息。

<强>诊断

web.xml不是问题。

问题是Application.callInitializers()从类路径上的所有wicket.properties文件加载初始值设定项,并尝试初始化相关组件。

你的类路径上有wicket-velocity.jar,即使你没有使用velocity,wicket正在尝试初始化它,因为它包含一个wicket.properties文件,导致调用org.apache.wicket.velocity.Initializer.init()(也是在wicket-velocity.jar)。此方法尝试在Velocity中调用静态init方法,该方法不在类路径上。

如果从类路径中获取wicket-velocity.jar,则此问题应该消失。