关于java:Spring Boot应用程序无法以org.eclipse.jetty.server.Server类启动

Spring Boot APPLICATION FAILED TO START as class org.eclipse.jetty.server.Server does not exist

我正在将Web应用程序迁移到无法启动的Spring Boot应用程序,并显示以下错误消息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    An attempt was made to call the method org.eclipse.jetty.server.Server.
     <init>(Lorg/eclipse/jetty/util/thread/ThreadPool;)V but it does not
     exist.
     Its class, org.eclipse.jetty.server.Server, is available from the
     following locations:

    jar:file:/C:/Users/xyz/.m2/repository/org/eclipse/jetty/jetty-
    server/8.2.0.v20160908/jetty-server-
    8.2.0.v20160908.jar!/org/eclipse/jetty/server/Server.class

    It was loaded from the following location:

    file:/C:/Users/xyz/.m2/repository/org/eclipse/jetty/jetty-
    server/8.2.0.v20160908/jetty-server-8.2.0.v20160908.jar


    Action:

    Correct the classpath of your application so that it contains a single,
    compatible version of org.eclipse.jetty.server.Server

因为只有一个位置(C:/Users/xyz/.m2/repository/org/eclipse/jetty/jetty-
如Spring Boot所指出的server / 8.2.0.v20160908 / jetty-server-8.2.0.v20160908.jar),应该没有歧义。我已经为版本8.2.0.v20160908提供了所有必需的maven依赖项。我已经从spring-boot-starter-web中排除了tomcat依赖项(spring-boot-starter-tomcat),因为我需要使用码头。但是我没有在spring-boot-starter-web中包括jetty spring boot starter依赖项,因为我已经嵌入了具有组ID org.eclipse.jetty的嵌入式jetty依赖项,通过该组ID定义了jetty依赖项(jetty-server,jetty-servlet,jetty-security,jetty-http,jetty -util,jetty-webapp,jetty-xml,jetty-io,jetty-deploy等)。

Spring Boot版本为v2.1.1.RELEASE

码头服务器被定义为spring bean,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
      <bean id="webServer" class="org.someorg.server.jetty.Server">
        <property name="threadPool">
            <bean class="org.eclipse.jetty.util.thread.QueuedThreadPool">
                <property name="minThreads" value="8" />
                <property name="maxThreads" value="32" />
            </bean>
        </property>
        <property name="connectors">
            <list>
                <bean class="org.someorg.server.jetty.XmlConnector">
                    <property name="port" value="34347" />
                </bean>
                <bean class="org.eclipse.jetty.server.ssl.SslSelectChannelConnector">
                    <property name="port" value="34346" />
                    <property name="keystore" value="classpath:keystore" />
                    <property name="password" value="somepassword" />
                    <property name="keyPassword" value="somekeypassword" />
                    <property name="truststore" value="classpath:keystore" />
                    <property name="trustPassword" value="sometrustpassword"
      />
                </bean>
                <bean
      class="org.eclipse.jetty.server.nio.SelectChannelConnector">
                    <property name="port" value="34345" />
                </bean>
            </list>
        </property>
        <property name="handler">
            <bean class="org.eclipse.jetty.server.handler.HandlerCollection">
                <property name="handlers">
                    <list>
                        <ref bean="webContexts" />
                        <bean id="defaultHandler"
       class="org.eclipse.jetty.server.handler.DefaultHandler" />
                    </list>
                </property>
            </bean>
        </property>
        <property name="beans">
            <list>
                <bean class="org.eclipse.jetty.deploy.WebAppDeployer">
                    <property name="contexts" ref="webContexts" />
                    <property name="webAppDir" value="webapps" />
                </bean>
            </list>
        </property>
        <property name="stopAtShutdown" value="false" />
     </bean>`

Class Server如下所示:

1
2
3
4
5
6
public class Server extends org.eclipse.jetty.server.Server implements
ApplicationListener<ApplicationContextEvent> {

 // code here

}

我不确定Spring Boot在这里期望什么。正如我在Maven依赖关系层次结构中看到的那样,我没有任何其他码头版本。所有的Maven依赖项都在classpath上。

任何指针吗?

谢谢!


您使用的跳船版本与所选的弹簧靴版本不兼容。

spring-boot-starter-web 2.1.1.RELEASE依赖于spring-web 5.1.3.RELEASE,其依赖于码头服务器9.4.14.v20181114。

您必须升级码头依赖。