编程语言
首页 > 编程语言> > java – GlassFish v3上的Wicket

java – GlassFish v3上的Wicket

作者:互联网

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

> wicket-1.4.10.jar
> wicket-extensions-1.4.10.jar
> slf4j-api-1.4.2.jar
> slf4j-jdk14-1.4.2.jar

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

exception

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

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

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

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

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

这似乎是2008年解决的一个问题(我使用的是当前的最新版本).

关于我做错了什么的任何想法?

提前致谢

解决方法:

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,则此问题应该消失.

标签:java,glassfish,wicket,glassfish-3
来源: https://codeday.me/bug/20190630/1340964.html