Jetty 12x:NoSuchMethodError:'void org.eclipse.jetty.server.ServerConnector.setSoLingerTime(int)'

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

我正在尝试将jetty版本从9x升级到12x,并在启动我的应用程序时出现以下异常。

Exception in thread "main" java.lang.NoSuchMethodError: 'void org.eclipse.jetty.server.ServerConnector.setSoLingerTime(int)'
        at org.restlet.ext.jetty.JettyServerHelper.createConnector(JettyServerHelper.java:325)
        at org.restlet.ext.jetty.JettyServerHelper.createServer(JettyServerHelper.java:376)
        at org.restlet.ext.jetty.JettyServerHelper.getWrappedServer(JettyServerHelper.java:685)
        at org.restlet.ext.jetty.JettyServerHelper.start(JettyServerHelper.java:702)
        at org.restlet.Server.start(Server.java:579)
        at org.restlet.Component.startServers(Component.java:642)
        at org.restlet.Component.start(Component.java:567)
        at com.gkp.StandAloneReportingService.setupHost(StandAloneReportingService.java:402)
        at com.gkp.StandAloneReportingService.init(StandAloneReportingService.java:352)
        at com.gkp.StandAloneReportingService.<init>(StandAloneReportingService.java:287)
        at com.gkp.StandAloneReportingService.main(StandAloneReportingService.java:213)

环境:

  • JDK17
  • Spring框架5.3.32
  • 码头12.0.8
  • Restlet 2.4.1

代码:-

    private void setupHost() throws Exception {
        // start a new Restlet component
        component = new Component();

        // setting up server connectors
        setupServerConnectors(component.getServers());

        // setting up JMS listening port
        setupJMSListeningPort();
        
        // creating a http authentication layer if configured
        setupHttpAuthentication(component);

        component.start();
    }

Pom.xml:

<dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-client</artifactId>
        <version>12.0.8</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-server</artifactId>
        <version>12.0.8</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-http</artifactId>
        <version>12.0.8</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-io</artifactId>
        <version>12.0.8</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-util</artifactId>
        <version>12.0.8</version>
    </dependency>
    <dependency>
        <groupId>org.restlet.jse</groupId>
        <artifactId>org.restlet.ext.jetty</artifactId>
        <version>2.4.1</version>
    </dependency>

依赖树:

谢谢您的帮助!

java spring jetty restlet jetty-12
1个回答
0
投票

ServerConnector.setSoLinger(int)
早在 2018 年就被弃用,没有替代品。

这是因为

java.net.StandardSocketOptions.SO_LINGER
对 Jetty 专用的非阻塞套接字没有任何目的或影响。

最后一次

java.net.StandardSocketOptions.SO_LINGER
可行是当以下所有条件都成立时。

  • 将 Jetty 7 或更早版本与非 NIO 连接器一起使用。
  • 使用 Java 6 或更早版本。

由于 Jetty 12 使用的是较新版本的 Java,并且仅使用 NIO,因此

java.net.StandardSocketOptions.SO_LINGER
不能也不能使用。

只需从代码库中删除该行代码,它在 Jetty 9 上没有任何用途,而且基本上是无操作的。

© www.soinside.com 2019 - 2024. All rights reserved.