代码之家  ›  专栏  ›  技术社区  ›  Stefan Ernst

GlassFish上的Wicket v3

  •  4
  • Stefan Ernst  · 技术社区  · 14 年前

    我希望这会更容易,因为我只是想做一个简单的测试运行与Wicket内的一个耳朵在GlassFish v3。不过,现在我已经通过netbeans插件将Wicket库添加到了WAR项目中

    • 灯芯-1.4.10.jar
    • wicket-extensions-1.4.10.jar网站
    • slf4j-api-1.4.2.jar文件
    • slf4j-jdk14-1.4.2.jar型

    尝试在GlassFish上启动web应用程序时出现以下启动错误:

    例外

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

    NoClassDefFoundError:org/apache/velocity/app/velocity

    Wicket需要速度作为依赖吗?我检查了maven创建的默认项目结构,但没有找到依赖项。我还查看了wicket+ejb教程,其中也没有提到速度。

    现在我在我的类路径中添加了velocity,我得到了这个错误:

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

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

    你知道我做错了什么吗?

    提前谢谢

    1 回复  |  直到 14 年前
        1
  •  3
  •   Don Roby    14 年前

    Wicket不需要velocity,尽管它可以通过Wicket-velocity.jar库与之协作。

    完整的stacktrace可能有助于发现 尝试加载它,尽管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。我要换一台有灯芯的机器回来 也许 吧 更多的想法,但是我突然想到web.xml可能也有关于wicket配置的有用信息。

    诊断

    web.xml不是问题所在。

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

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

    如果wicket-velocity.jar离开了类路径,这个问题应该会消失。