【问题标题】:Getting `NoClassDefFoundError` for classes `FutureCallback` and `LazyList` using Jetty Maven plugin 9.4.32.v20200930 on Java 11在 Java 11 上使用 Jetty Maven 插件 9.4.32.v20200930 获取类“FutureCallback”和“LazyList”的“NoClassDefFoundError”
【发布时间】:2021-01-22 14:10:18
【问题描述】:

几个月前我开始使用 Jetty Maven 插件维护一个旧的 Spring 项目。我目前正在尝试将其移植到 Java 11,但 Jetty 不会启动服务器并且(默默地)失败并显示 MultiException[java.lang.NoClassDefFoundError: org/eclipse/jetty/util/FutureCallback, java.lang.NoClassDefFoundError: org/eclipse/jetty/util/LazyList]

这似乎是 Jetty Maven 插件的一个老错误,我可以在各种 9.x 版本上重现它。

它在版本 10 和 11 中似乎已修复,我很乐意使用这些版本,但两者仍处于 alpha 阶段,配置已发生根本变化,文档尚未发布。

maven.compiler.sourcemaven.compiler.target 在 POM 中都设置为 11,如果我将提供 org.eclipse.jetty.util.FutureCallbackorg.eclipse.jetty.util.LazyList 的依赖项放在 POM 中,则没有任何变化。

[WARNING] FAILED ServletHandler@4ba402b5{FAILED}: java.lang.NoClassDefFoundError: org/eclipse/jetty/util/LazyList
java.lang.NoClassDefFoundError: org/eclipse/jetty/util/LazyList
    at org.eclipse.jetty.servlet.ServletHandler.doStop (ServletHandler.java:277)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.stop (AbstractLifeCycle.java:93)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.stop (ContainerLifeCycle.java:180)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStop (ContainerLifeCycle.java:201)
    at org.eclipse.jetty.server.handler.AbstractHandler.doStop (AbstractHandler.java:108)
    at org.eclipse.jetty.security.SecurityHandler.doStop (SecurityHandler.java:437)
    at org.eclipse.jetty.security.ConstraintSecurityHandler.doStop (ConstraintSecurityHandler.java:425)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.stop (AbstractLifeCycle.java:93)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.stop (ContainerLifeCycle.java:180)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStop (ContainerLifeCycle.java:201)
    at org.eclipse.jetty.server.handler.AbstractHandler.doStop (AbstractHandler.java:108)
    at org.eclipse.jetty.server.session.SessionHandler.doStop (SessionHandler.java:519)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.stop (AbstractLifeCycle.java:93)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.stop (ContainerLifeCycle.java:180)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStop (ContainerLifeCycle.java:201)
    at org.eclipse.jetty.server.handler.AbstractHandler.doStop (AbstractHandler.java:108)
    at org.eclipse.jetty.server.handler.ContextHandler.stopContext (ContextHandler.java:1061)
    at org.eclipse.jetty.servlet.ServletContextHandler.stopContext (ServletContextHandler.java:375)
    at org.eclipse.jetty.webapp.WebAppContext.stopWebapp (WebAppContext.java:1462)
    at org.eclipse.jetty.maven.plugin.JettyWebAppContext.stopWebapp (JettyWebAppContext.java:342)
    at org.eclipse.jetty.webapp.WebAppContext.stopContext (WebAppContext.java:1428)
    at org.eclipse.jetty.server.handler.ContextHandler.doStop (ContextHandler.java:1115)
    at org.eclipse.jetty.servlet.ServletContextHandler.doStop (ServletContextHandler.java:286)
    at org.eclipse.jetty.webapp.WebAppContext.doStop (WebAppContext.java:547)
    at org.eclipse.jetty.maven.plugin.JettyWebAppContext.doStop (JettyWebAppContext.java:433)

【问题讨论】:

标签: java eclipse maven jetty


【解决方案1】:

这是 maven 和 jetty 交互的一个有趣的副作用。

发生的情况是,在码头停止/关闭时,maven 进程将类加载器从码头线程下方拉出,留下随机错误,有些甚至无法找到执行完全关闭所需的类。

https://github.com/eclipse/jetty.project/issues/4410

Jetty 或 Maven 都没有找到解决方法或解决方法。

如果您找到解决方案,请对上述问题发表评论(或提交新问题),我们会记录下来。

【讨论】:

  • 你的意思是这个错误只发生在 Jetty 关闭时?所以这不是项目启动然后立即停止的原因吗?
  • 正确。我提到的问题以及您的堆栈跟踪仅在 Jetty 服务器停止/关闭时产生。
  • 好了,我回到起点。但是非常感谢帮助我解决这个问题。
  • 您的服务器无法启动的原因目前是静默的,没有有用的反馈。也许您应该在(下一个)问题中详细说明您要尝试做什么。您在 jetty-maven-plugin 上的配置是什么样的,等等......这可能是错误配置或误用。
猜你喜欢
  • 2015-03-26
  • 1970-01-01
  • 1970-01-01
  • 2020-08-05
  • 1970-01-01
  • 2017-09-17
  • 2014-05-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多