我正在从Jboss 7.1.1 final迁移到Wildfly 8.2 final,当我尝试启动servlet时,我得到以下错误:
Failed to start service jboss.undertow.deployment.default-
server.default-host./myservlet.UndertowDeploymentInfoService:
org.jboss.msc.service.StartException in service
jboss.undertow.deployment.default-server.default-
host./myservlet.UndertowDeploymentInfoService: Failed to start service
Caused by: java.lang.IllegalArgumentException: UT010009: Servlet
randomServlet of type class servlets.randomServlet does not implement
javax.servlet.Servlet
web . xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name>server</display-name>
<servlet>
<display-name>randomServlet</display-name>
<servlet-name>randomServlet</servlet-name>
<servlet-class>servlets.randomServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>randomServlet</servlet-name>
<url-pattern>/randomServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>randomServlet</servlet-name>
<url-pattern>randomServlet</url-pattern>
</servlet-mapping>
<listener>
<listener-class>serverFunctions.SessionListener</listener-class>
</listener>
</web-app>
也许它出现是因为我使用java 8 ?
确保您的包(WAR或EAR)使用正确的JEE API版本(例如maven javaee-api
包)并且不包含JEE类实现。可能有javax.servlet.Servlet
类的文件,你正在部署和WildFly决定它是一个不同的类,而不是一个内置到它。即使它们完全相同也没关系,不同的类装入器会抛出错误,如'class B extends C' is not an instance of C
我也遇到了同样的问题。当我在servlet上使用注解而不是在web.xml中给出servlet映射时,我的问题解决了。
Wildfly8和升级版本使用所有Api的更新版本,所以在使用映射时会出现错误,只需更改如下
1)升级servlet版本到最新版本
2)从web.xml中删除所有servlet映射
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name>server</display-name>
<listener>
<listener-class>serverFunctions.SessionListener</listener-class>
</listener>
</web-app>
3)按如下方式注释servlet
例子@WebServlet("/randomServlet")
public class randomServletextends HttpServlet {
}
升级你正在使用的所有jar或maven依赖项