【发布时间】:2020-08-05 09:32:57
【问题描述】:
我们有一个模块使用 DropWizard 和 Jetty,它在启动时失败并出现错误:“org/eclipse/jetty/util/thread/ExecutionStrategy$Factory”
java.lang.NoClassDefFoundError: org/eclipse/jetty/util/thread/ExecutionStrategy$Factory
at org.eclipse.jetty.io.SelectorManager.<init>(SelectorManager.java:52)
at org.eclipse.jetty.server.ServerConnector$ServerConnectorManager.<init>(ServerConnector.java:497)
at org.eclipse.jetty.server.ServerConnector.newSelectorManager(ServerConnector.java:229)
at org.eclipse.jetty.server.ServerConnector.<init>(ServerConnector.java:221)
at io.dropwizard.jetty.HttpConnectorFactory.buildConnector(HttpConnectorFactory.java:562)
at io.dropwizard.jetty.HttpConnectorFactory.build(HttpConnectorFactory.java:539)
at io.dropwizard.server.DefaultServerFactory.buildAppConnectors(DefaultServerFactory.java:234)
at io.dropwizard.server.DefaultServerFactory.buildRoutingHandler(DefaultServerFactory.java:194)
at io.dropwizard.server.DefaultServerFactory.build(DefaultServerFactory.java:172)
at io.dropwizard.cli.ServerCommand.run(ServerCommand.java:49)
at io.dropwizard.cli.EnvironmentCommand.run(EnvironmentCommand.java:44)
at io.dropwizard.cli.ConfiguredCommand.run(ConfiguredCommand.java:87)
at io.dropwizard.cli.Cli.run(Cli.java:78)
at io.dropwizard.Application.run(Application.java:93)
这个项目中有多个模块,项目中有2个不同的jetty-io工件,一个版本为:9.3.20和9.4.18(这是SelectorManager所在的位置,它尝试使用不存在的界面)。 由于某种原因,它似乎像旧版本(9.3.20,由另一个模块拉取)进入类路径,并尝试在 ExecutionStrategy 接口中使用 Factory 接口。 ExecutionSrategy 接口位于 jetty-util 工件中。该工件也有 2 个版本(9.4.18 和 9.3.19,较新的版本没有在 ExecutionStrategy 中有这个 Factory 接口。
抛出错误的模块的mnv:dependency -Dverbose的结果: result of mvn command
我真的不知道如何解决这个问题,maven 树看起来不错,我所看到的正在使用良好的依赖项
【问题讨论】:
-
欢迎来到stackoverflow。
标签: java maven jetty classpath dropwizard