我正在尝试将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)
环境:
代码:-
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>
依赖树:
谢谢您的帮助!
ServerConnector.setSoLinger(int)
早在 2018 年就被弃用,没有替代品。
这是因为
java.net.StandardSocketOptions.SO_LINGER
对 Jetty 专用的非阻塞套接字没有任何目的或影响。
最后一次
java.net.StandardSocketOptions.SO_LINGER
可行是当以下所有条件都成立时。
由于 Jetty 12 使用的是较新版本的 Java,并且仅使用 NIO,因此
java.net.StandardSocketOptions.SO_LINGER
不能也不能使用。
只需从代码库中删除该行代码,它在 Jetty 9 上没有任何用途,而且基本上是无操作的。