java - java.lang.NoSuchMethodError : javax. servlet.ServletContext.getEffectiveSessionTrackingModes()Ljava/util/Set;

标签 java servlets jboss

我想要一个 servlet 来处理来自独立 java 程序的输入。如何在jboss中部署这个servlet。我将 servlet.class 文件放在 WEB-INF/classes 中,并在 web.xml 中将 servlet url 映射为“.do”。从我的 Java 客户端程序中,我使用 URL 对象打开了与 servlet 的连接。使用 localhost:8080/.do。但我收到以下错误:

  ERROR [org.apache.catalina.connector.CoyoteAdapter] An exception or error occurred in the container during the request processing: 
  java.lang.NoSuchMethodError: javax.servlet.ServletContext.getEffectiveSessionTrackingModes()Ljava/util/Set;
            at
     org.apache.catalina.connector.CoyoteAdapter.postParseRequest(CoyoteAdapter.java:567)
            at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:359)
            at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877)
            at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:654)
            at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:951)

web.xml file contents :

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "java.sun.com/j2ee/dtds/web-app_2_2.dtd">; 
<web-app> 
     <servlet>
         <servlet-name>ReverseServlet</servlet-name> 
         <servlet-class>ReverseServlet</servlet-class> 
     </servlet> 
     <servlet-mapping>
          <servlet-name>ReverseServlet</servlet-name> 
          <url-pattern>/*.do</url-pattern> 
     </servlet-mapping> 
</web-app>

最佳答案

java.lang.NoSuchMethodError: javax.servlet.ServletContext.getEffectiveSessionTrackingModes()Ljava/util/Set;

这个方法是introduced在 Servlet 3.0 中。此错误至少可能有以下原因:

  1. 您的 web.xml 未声明至少符合 Servlet 3.0。

  2. 您的 servlet 容器至少不支持 Servlet 3.0。

  3. 您在 /WEB-INF/lib 中有旧版本的 servlet 容器特定库。

为了解决这个问题,

  1. 确保您的 web.xml 根声明符合 Servlet 3.0:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app 
        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_3_0.xsd"
        version="3.0">
    
        <!-- Config here. -->
    
    </web-app>
    
  2. 确保您正在部署到 Servlet 3.0 兼容容器。如果是 JBoss AS,则至少版本为 6.0.0。

  3. 确保 /WEB-INF/lib 中没有这些库。他们不属于那里。这是初学者在“解决”IDE 中遇到的编译错误时常犯的错误。另请参阅How do I import the javax.servlet API in my Eclipse project?

您已声明您的 web.xml 符合 Servlet 2.2。这绝对是错误的。相应地修复它。

关于java - java.lang.NoSuchMethodError : javax. servlet.ServletContext.getEffectiveSessionTrackingModes()Ljava/util/Set;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8969497/

相关文章:

java - 哪个线程运行所有 AWT/swing 事件处理代码?

java - 与扫描仪的混淆 (Big Java Ex 6.3)

spring - 如何注入(inject)@products方法

java - 使用 Spring、JPA 和 Hibernate 访问在 Jboss 中配置的多个数据库/数据源

java - 违反 UNIQUE KEY 约束。无法在对象中插入重复的键

java - 将链接值作为 href 标记中的变量传递

java - 模拟 DAO 类及其中的方法

javascript - 如何在servlet中获取java脚本值到java

java - JSTL - 使用带有 java.sql.Timestamp 的 formatDate

javascript - 使用 jquery 和 servlet 检查数据库中的现有用户