【发布时间】:2020-07-08 15:28:10
【问题描述】:
我是 Apache Wicket 的新手,我正在尝试在 Eclipse 中制作一个简单的程序,以便练习。我很难让它工作;可能是 Tomcat 或 Eclipse 中的某个选项的配置有问题。
HelloWorld.html:
<html>
<body>
<h1 wicket:id="message">Hi, World!</h1>
</body>
</html>
HelloWorld.java
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
public class HelloWorld extends WebPage {
public HelloWorld() {
add(new Label("message", "Hello, World!"));
}
}
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>simple-wicket</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>helloworld</filter-name>
<filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
<init-param>
<param-name>applicationClassName</param-name>
<param-value>general.HelloWorld</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>helloworld</filter-name>
<url-pattern>/hello</url-pattern>
</filter-mapping>
</web-app>
我已经下载了相应的 wicket jars(其中 org.apache.wicket.protocol.http.WicketFilter 作为 .class 包含在内),我已将此 Web 项目与 Tomcat 7 同步,当我尝试运行时收到以下错误:
SEVERE: Exception starting filter helloworld
java.lang.ClassNotFoundException: org.apache.wicket.protocol.http.WicketFilter
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1955)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1798)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:536)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:518)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:148)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:264)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:5037)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5739)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1707)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1697)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
有谁知道我该如何解决这个问题?我有 JDK 1.8,以防万一。
提前致谢!
编辑:这是项目的结构: Structure in eclipse
【问题讨论】:
-
你是如何构建这个的?听起来 Wicket jar 未包含在您的 Web 应用程序中。
-
在这个例子中,我没有使用任何构建工具,但在我之前的一次尝试中,我使用了 Maven,它帮助我下载了检票口罐子。在这个项目中,我通过项目属性中的 Build Path 选项添加了 jars(它在引用的库中)。我应该将它们移动到不同的位置吗? wicket-core jar 是具有过滤器类的罐子。我已经编辑了原始帖子以包含我的项目结构。
标签: eclipse tomcat filter wicket