我刚刚更新了一个服务器,该服务器在应用程序启动并且tomcat开始服务请求之后开始发生异常。
我更改了连接以验证它是否也有问题,但发生了同样的事情:
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,带有此连接器配置
<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连接器
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进行准备。尽管如此,他们仍在进行修复。
https://bugs.debian.org/cgi- bin/bugreport.cgi?bug=895866