Tomcat 在开始服务后为 Nio2Endpoint.setSocketOptions 抛出 NoSuchMethodError [英] Tomcat thowing NoSuchMethodError for Nio2Endpoint.setSocketOptions after start serving
问题描述
我刚刚更新了一个服务器,在应用程序启动和 tomcat 开始服务请求后开始发生异常.
I have just updated a server where an exception started to happen after the application starts and tomcat starts serving requests.
我更改了连接以验证它是否也存在问题,但同样发生了:
I changed the connection to verify if there was an isue with it as well but the same happened:
19-Apr-2018 20:31:38.833 SEVERE [http-nio2-8080-Acceptor-0] org.apache.tomcat.util.net.Nio2Endpoint.setSocketOptions java.lang.NoSuchMethodError: java.nio.ByteBuffer.clear()Ljava/nio/ByteBuffer;
at org.apache.tomcat.util.net.SocketBufferHandler.reset(SocketBufferHandler.java:146)
at org.apache.tomcat.util.net.Nio2Channel.reset(Nio2Channel.java:58)
at org.apache.tomcat.util.net.Nio2Endpoint.setSocketOptions(Nio2Endpoint.java:317)
at org.apache.tomcat.util.net.Nio2Endpoint$Acceptor.run(Nio2Endpoint.java:454)
at java.lang.Thread.run(Thread.java:748)
这个应用程序是一个运行在 tomcat 8.5.30 debian 上的 java8使用此连接器配置
This app is a java8 running on tomcat 8.5.30 debian With this connector config
<Connector port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol" executor="tomcatThreadPool"
URIEncoding="UTF-8" connectionTimeout="15000" disableUploadTimeout="false"
connectionUploadTimeout="60000" maxHttpHeaderSize="16384" acceptCount="1000">
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol"/>
</Connector>
使用常规的 1.1 连接器
With the regular 1.1 connector
SEVERE [catalina-exec-44] org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun
java.lang.NoSuchMethodError: java.nio.ByteBuffer.limit(I)Ljava/nio/ByteBuffer;
at org.apache.coyote.http11.Http11InputBuffer.recycle(Http11InputBuffer.java:280)
at org.apache.coyote.http11.Http11Processor.recycle(Http11Processor.java:1709)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.release(AbstractProtocol.java:972)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:940)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
推荐答案
好的,这个问题是由 Debian 更新引起的,它没有为 jdk 8 准备.不过他们正在修复.
Ok, the issue was caused by a Debian update, which was not prepared for jdk 8. They are working on a fix though.
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=895866
这篇关于Tomcat 在开始服务后为 Nio2Endpoint.setSocketOptions 抛出 NoSuchMethodError的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!