DropWizard(与Jetty一起)在 "orgeclipsejettyutilthreadExecutionStrategy$Factory "上抛出NoClassDefFoundError。

问题描述 投票:1回答:1

我们有一个使用DropWizard和Jetty的模块,它在启动时出现了错误。"orgeclipsejettyutilthreadExecutionStrategy$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,由另一个模块拉动)被放在classpath上,它试图在ExecutionStrategy接口中使用工厂接口。ExecutionSrategy接口在jetty-util artifact中。而且这个工件也有两个版本(9.4.18和9.3.19,新的版本有 在ExecutionStrategy中有这个Factory接口。

mnv:dependency 的结果 -Dverbose 抛出错误的模块。mvn命令的结果

我真的不知道该如何解决这个问题,maven树看起来不错,我看到的好的依赖关系都被使用了。

java maven jetty classpath dropwizard
1个回答
0
投票

不要同时混合使用多个版本的Jetty。

可能是一个好主意,依赖 jetty-bom 强制所有 jetty 依赖都是一个特定的版本,不管它们来自哪里的过渡性依赖。(直接引用的依赖关系不会使用bom特性)

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-bom</artifactId>
        <version>9.4.28.v20200408</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>
© www.soinside.com 2019 - 2024. All rights reserved.