Jetty:Spring 5 运行失败并出现 NoSuchMethodError

2023-12-03

我正在尝试将我的网络应用程序更新到当前的库。当我将 Spring 从 3.1.1 升级到 5.0.0 时,它开始失败:

java.lang.NoSuchMethodError: javax.servlet.http.HttpServletResponse.getStatus()I
    at org.springframework.web.servlet.FrameworkServlet.publishRequestHandledEvent(FrameworkServlet.java:1083)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1009)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:881)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:855)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1221)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399)
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)

我发现了两个相关问题:

  • 找不到 javax.servlet.http.HttpServletResponse.getStatus()
  • 调用response.getStatus()时出现NoSuchMethodError

这解释了很多,我已经升级了 jetty 和 servlet 规范。但我的应用程序总是失败。

依赖项:

[INFO] +- org.slf4j:jcl-over-slf4j:jar:1.7.5:compile
[INFO] |  \- org.slf4j:slf4j-api:jar:1.7.5:compile
[INFO] +- ch.qos.logback:logback-core:jar:1.1.1:compile
[INFO] +- ch.qos.logback:logback-classic:jar:1.1.1:compile
[INFO] +- org.codehaus.janino:janino:jar:2.6.1:compile
[INFO] |  \- org.codehaus.janino:commons-compiler:jar:2.6.1:compile
[INFO] +- org.springframework:spring-web:jar:5.0.0.RELEASE:compile
[INFO] |  +- org.springframework:spring-beans:jar:5.0.0.RELEASE:compile
[INFO] |  \- org.springframework:spring-core:jar:5.0.0.RELEASE:compile
[INFO] |     \- org.springframework:spring-jcl:jar:5.0.0.RELEASE:compile
[INFO] +- org.springframework:spring-webmvc:jar:5.0.0.RELEASE:compile
[INFO] |  +- org.springframework:spring-aop:jar:5.0.0.RELEASE:compile
[INFO] |  +- org.springframework:spring-context:jar:5.0.0.RELEASE:compile
[INFO] |  \- org.springframework:spring-expression:jar:5.0.0.RELEASE:compile
[INFO] +- javax.servlet:javax.servlet-api:jar:3.1.0:provided
[INFO] +- com.google.code.gson:gson:jar:2.2.2:compile
[INFO] \- junit:junit:jar:4.10:test
[INFO]    \- org.hamcrest:hamcrest-core:jar:1.1:test

Maven:

    <spring.framework.version>5.0.0.RELEASE</spring.framework.version>
    <maven-jetty-plugin.version>6.1.26</maven-jetty-plugin.version>
    <servlet.api.version>3.1.0</servlet.api.version>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.framework.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.framework.version}</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>${servlet.api.version}</version>
        <scope>provided</scope>
    </dependency>

<build>
    <finalName>smartpos-backend-device</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
                <showWarnings>true</showWarnings>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.1</version>
            <executions>
                <execution>
                    <id>install</id>
                    <phase>install</phase>
                    <goals>
                        <goal>sources</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>maven-jetty-plugin</artifactId>
            <version>${maven-jetty-plugin.version}</version>

            <configuration>
                <jettyEnvXml>src/main/resources/jetty/jetty-env.xml</jettyEnvXml>
                <contextPath>smartpos-json</contextPath>
                <scanIntervalSeconds>0</scanIntervalSeconds>

                <connectors>
                    <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
                        <port>8080</port>
                    </connector>
                </connectors>
                <systemProperties>
                    <systemProperty>
                        <name>logback.configurationFile</name>
                        <value>logback.xml</value>
                    </systemProperty>
                    <systemProperty>
                        <name>LOG_PATH</name>
                        <value>.</value>
                    </systemProperty>
                </systemProperties>
            </configuration>
        </plugin>
    </plugins>
</build>

Spring 5 至少需要 Servlet 3.1 容器,但是当您使用 Jetty 6.1 时,它(最多)是 Servlet 2.5 容器。所以这显然是行不通的。

您必须升级您的 Jetty 版本。升级而不是maven-jetty-plugin您将需要使用适当的jetty-maven-plugin(名称已更改)并且它现在是 Eclipse 的一部分。

<maven-jetty-plugin.version>9.4.7.v20170914</maven-jetty-plugin.version>

<plugin>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-maven-plugin</artifactId>
    <version>${maven-jetty-plugin.version}</version>
</plugin>

这应该使用插件和 Jetty 的最新版本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jetty:Spring 5 运行失败并出现 NoSuchMethodError 的相关文章

  • ZeroDateTimeBehavior=convertToNull 在使用 hibernate 的 jdbc url 中不起作用

    通过 extern 属性文件 url 指定如下 jdbc mariadb xxxxx 3306 xxxxx zeroDateTimeBehavior convertToNull 连接工作正常并且能够查询数据库 通过休眠 我创建了一个映射到带
  • Spring Data Jpa OneToMany 同时保存子实体和父实体?

    这是我的父实体 注意 为了简洁起见 删除了 getter setter lombok 注释 Entity public class Board Id GeneratedValue strategy GenerationType IDENTI
  • Java:一种将 Mime(内容)类型与 CommonsMultipartFile 中的文件扩展名相匹配的方法

    在我的公司 出于额外原因 我需要将 mime 类型与文件扩展名进行比较 我有一个CommonsMultipartFile 我正在尝试找出进行这种比较的最佳方法 我见过一个MimetypesFileTypeMap 但不确定这是否适用于此 我试
  • Android 信号 11 (SIGSEGV),代码 1 (SEGV_MAPERR) libwebviewchromium.so

    对于 android 4 4 我多次收到 Native crash at system lib libwebviewchromium so 错误 以下是设备包括 Xperia Z1 SO 01F 16 30 2 Galaxy Tab4 7
  • 当前平台不支持桌面 API

    我遇到过这个错误 java lang UnsupportedOperationException 当前平台不支持桌面 API 我将从我的 java 应用程序中打开一个文件 我用这个方法 Desktop getDesktop open new
  • 使用 https 的 Web 服务身份验证给出错误

    我编写了一个简单的 Web 服务 并使用摘要和 HTTPS 身份验证来保护它 我已经使用 Java 中的 keytool 生成了我的证书 当我通过创建 war 文件在 Tomcat 中部署 Web 服务时 axis 的欢迎页面正确显示 但是
  • 是否可以使用 Apache Tika 提取表信息?

    我正在寻找 pdf 和 MS Office 文档格式的解析器 以从文件中提取表格信息 当我看到 Apache Tika 时 正在考虑编写单独的实现 我能够从任何这些文件格式中提取全文 但我的要求是提取表格数据 我希望有 2 列采用键值格式
  • 如何使用 aether 从 Java 找到最新版本的 Maven 工件?

    他们的文档非常薄弱 我无法弄清楚 我找到了部分答案here https stackoverflow com questions 27428068 how to retrieve the latest also snapshot versio
  • java:为什么主线程等待子线程完成

    我有一个简单的java程序 主线程 main 创建并启动另一个线程t class T extends Thread Override public void run while true System out println Inside
  • 生成一定长度的所有排列

    假设我们有一个字母表 abcdefghiklimnop 如何以有效的方式以五个一组的形式重复该字母表来递归生成排列 几天来我一直在为此苦苦挣扎 任何反馈都会有帮助 本质上这与 生成给定字符串的所有排列 https stackoverflow
  • 我的 Kafka 流应用程序刚刚退出,代码为 0,什么也不做

    为了尝试 Kafka 流 我这样做了 public static void main String args final StreamsBuilder builder new StreamsBuilder final Properties
  • java彩色滚动条搜索结果

    我将如何在 Java 中自定义滚动条 以便我可以进行像 chrome 一样的搜索 也就是说在结果所在的位置放置彩色条纹 我不想要一个库 因为我更喜欢自己编写代码 另外 我不想失去我拥有的 L F 欢迎举例 实际上 它将查看一个大的文本文件或
  • 从字符串中删除重音符号

    Android 中有没有什么方法 据我所知 没有 java text Normalizer 可以从字符串中删除任何重音 例如 变成 eau 如果可能的话 我想避免解析字符串来检查每个字符 java text NormalizerAndroi
  • java绕中心旋转矩形

    我想围绕其中心点旋转一个矩形 它应该保留在应该绘制的位置并在该空间中旋转 这是我的代码 AffineTransform transform new AffineTransform transform rotate Math toRadian
  • javadoc 子集/java 库组织

    我自己从来没有运行过javadoc 无论是在命令行还是ant 的 javadoc 任务 http ant apache org manual Tasks javadoc html 我将使用 ant 我需要为我编写的库生成 javadoc 问
  • 获取接收者的设备令牌以在 Firebase 中发送通知

    所以我正在学习如何使用 firebase 发送设备到设备的通知 我看到了这个answer https stackoverflow com a 42548586 5237289发送通知 看起来很简单 现在 我知道要获取发件人的令牌 它应该如下
  • 线程数组?

    所以我在理解如何避免线程的顺序执行时遇到了问题 我试图创建一个线程数组并在单独的循环中执行 start 和 join 函数 这是我现在拥有的代码示例 private static int w static class wThreads im
  • 如何更改 JAX-WS Web 服务的地址位置

    我们目前已经公开了具有以下 URL 的 JAX RPC Web 服务 http xx xx xx xx myservice MYGatewaySoapHttpPort wsdl http xx xx xx xx myservice MYGa
  • 假布尔值=真?

    我在一本书中找到了这段代码 并在 Netbeans 中执行了它 boolean b false if b true System out println true else System out println false 我只是不明白为什
  • FetchType.LAZY 不适用于休眠中的 @ManyToOne 映射

    简而言之 我的 Child 类与 Parent 类之间存在多对一的关系 我想加载所有的孩子 而不必加载他们的父母详细信息 我的孩子班级是 Entity public class Child implements Serializable I

随机推荐

  • 用贝塞尔曲线绘制圆弧

    我正在尝试使用贝塞尔曲线绘制圆弧 我了解到 您无法使用贝塞尔曲线绘制完美的圆 但您可以接近 不幸的是 数学太复杂了 我个人无法弄清楚 我可以将下面的 A1 切片创建为三角形 但我不知道如何确定控制点 另外 如果我尝试沿相反方向从圆中绘制一个
  • Google Docs API - 更新链接表

    我正在尝试使用新的 API 更新 Google 文档中的表格 表格是从 Google Sheet 链接的 我尝试了谷歌云中的API资源管理器 我能够提取 json 格式的文档 然后过滤掉表格 但在表 json 结构中 我没有找到任何可以更新
  • Python:从同一个解释器同时执行多个脚本

    我有一个蟒蛇脚本 再次执行4 5个Python脚本 出于性能原因 我想使用相同的解释器来执行所有脚本 我该如何处理这个问题 明显的解决方案 可能需要一些调整 是仅从主脚本调用每个脚本的主函数 例如 如果 script1 py 包含 usr
  • 关于 Web 应用程序端口的困惑

    我有一个已经深入开发的项目 并且端口存在问题 客户端是用骨干编写的 SPA 使用 Sails 作为服务器 问题在于 Client 在 Express 中运行在端口 80 上 而 Sails 在端口 1337 上运行 我想在 Sails 内托
  • powershell cmdlet 始终输出一个表,其列可由用户选择

    如果下面只有 4 列 我会得到一个可以通过 select 进一步修剪的表格 但如果我添加更多字段 输出就会变成一个列表 如何使其始终成为一个表而不破坏后续的选择Format table做 初始表将来自 cmdlet 用户将执行后续选择返回一
  • 为什么不将函数参数存储在 XMM 向量寄存器中?

    我目前正在阅读一本书 计算机系统 程序员的视角 我发现 在 x86 64 架构上 我们仅限于 6 个整数参数 这些参数将传递给寄存器中的函数 接下来的参数将在堆栈上传递 此外 前最多 8 个 FP 或向量参数在 xmm0 7 中传递 为什么
  • 如何检测 React 应用程序中动态生成的元素外部的点击?

    我一直在与 SPA 合作React 18 and 电影数据库 TMDB API 我目前正在研究搜索功能 有一个搜索结果列表 如下所示 为了在这个列表上有一个漂亮的滚动条 我使用React Perfect 滚动条 当我点击列表外部时 我需要该
  • 为什么 Jetty 使用 text/html 内容类型提供 css

    我在 Scalatra 应用程序中使用嵌入式 Jetty 服务器 问题是它服务css文件与text html内容类型 这是主要方法 package yard web import org eclipse jetty server Serve
  • 如何在 Javascript 中获取嵌套数组的长度?

    我有一个嵌套数组的示例 var testArray 1 2 3 4 5 6 7 8 9 10 11 12 这是我获取嵌套数组长度的函数 Array prototype getLength function var sum 0 functio
  • 如何正确使用 postMessage 通过 html5 和现代浏览器进行跨域消息传递?我仍然收到错误

    我确信这里出了问题 但我不能完全指出它 这个例子here表现良好 控制台上没有任何通知或错误 因此这意味着我的浏览器支持使用 html5 进行跨域消息传递 当然是这样 它是 Chrome 14 我的代码或多或少执行以下操作 WebsiteA
  • 使用路由器 1.3.0 部署多个流时出错

    我在 1 3 0 版本上遇到以下问题 xd gt stream create test1 definition http 路由器 script file tmp file1 groovy deploy 这部署得很好 xd gt stream
  • 删除/隐藏card.io/paypal徽标android

    我正在将 Card io 集成到我的 Android 应用程序中 并且我想删除 paypal 徽标 我搜索了stackoverflow并了解了EXTRA USE CARDIO LOGO的用法 将此设置为 true 或 false 显示 Pa
  • Python:UnicodeDecodeError:'utf8'编解码器无法解码字节0x91 [关闭]

    Closed 这个问题需要调试细节 目前不接受答案 我正在解析 CSV 如下所示 with open args csv rU as csvfile try reader csv DictReader csvfile dialect csv
  • ggplot2 中轴接触处缺少像素

    我注意到 ggplot2 在 x 轴和 y 轴之间留下了一个小间隙 考虑以下代码 require ggplot2 quietly TRUE axisLines element line color black size 2 p ggplot
  • 如何在线程和 GUI 之间进行通信

    目前我使用 Kotlin 和 Java 开发桌面应用程序 GUI 是使用 JavaFX 制作的 我有几个基本的 UDP 服务器 Kotlin 线程 监听不同的端口以通过网络接收数据 连接工作正常 我可以想到几种 或多或少复杂的 线程和 GU
  • AngularJS 和 Redactor 插件

    所以我正在 AngularJS 中开发一个新网站 并且非常喜欢它 然而 我遇到了一个问题 我正在尝试向我的文本区域添加一个名为 Redactor 的 jQuery 插件 但我认为当我初始化该插件时 它会替换文本区域元素 这是有问题的原因是因
  • Cloudfront使用ssl将www重定向到裸域[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 如果之前有人问过这个问题 请原谅我 有很多资源涉及到这个问题 但似乎没有什么适合我的特定 https 用例 我正在尝试重定向https www example com to http
  • 如何在特定位置显示自定义对话框?

    我有一个按钮 单击它会弹出一个对话框 该对话框显示在中心 但我想将它显示在按钮下方 如何做到这一点 我也尝试使用弹出窗口 这是代码 private void showPopup final Activity context Point p
  • docker 映像标识符是否可用于该 docker 内运行的进程?

    对于我的日志 我想包含 docker 映像标识符 这样我以后就可以将外部日志与生成它们的映像重新协调 有没有办法让 Docker 内部的进程获取它正在运行的图像标识符 也许是一个 dev or proc file 在 OCI 中以及之前在
  • Jetty:Spring 5 运行失败并出现 NoSuchMethodError

    我正在尝试将我的网络应用程序更新到当前的库 当我将 Spring 从 3 1 1 升级到 5 0 0 时 它开始失败 java lang NoSuchMethodError javax servlet http HttpServletRes