Tomcat thowing NoSuchMethodError for Nio2Endpoint.setSocketOptions after start serving

匿名 (未验证) 提交于 2019-12-03 00:58:01

问题:

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) 

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> 

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) 

回答1:

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



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!