Bug 65705 - java.lang.NoSuchMethodError: java.nio.ByteBuffer.limit(I)Ljava/nio/ByteBuffer;
Summary: java.lang.NoSuchMethodError: java.nio.ByteBuffer.limit(I)Ljava/nio/ByteBuffer;
Status: RESOLVED INVALID
Alias: None
Product: Tomcat 9
Classification: Unclassified
Component: Connectors (show other bugs)
Version: 9.0.36
Hardware: PC Linux
: P2 normal (vote)
Target Milestone: -----
Assignee: Tomcat Developers Mailing List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-11-25 10:32 UTC by laszlo.dobrontei
Modified: 2021-11-25 12:04 UTC (History)
0 users



Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description laszlo.dobrontei 2021-11-25 10:32:47 UTC
I guess, the reason of the error is explained here:
https://www.morling.dev/blog/bytebuffer-and-the-dreaded-nosuchmethoderror/

24-Nov-2021 11:34:30.235 SEVERE [http-nio-8080-exec-84] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [WebServicePort] in context with path [/WwrService] threw exception [Servlet execution threw an exception] with root cause
        java.lang.NoSuchMethodError: java.nio.ByteBuffer.limit(I)Ljava/nio/ByteBuffer;
                at org.apache.coyote.http11.filters.ChunkedInputFilter.doRead(ChunkedInputFilter.java:193)
                at org.apache.coyote.http11.Http11InputBuffer.doRead(Http11InputBuffer.java:250)
                at org.apache.coyote.Request.doRead(Request.java:551)
                at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:336)
                at org.apache.catalina.connector.InputBuffer.checkByteBufferEof(InputBuffer.java:632)
                at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:362)
                at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:132)
                at java.io.FilterInputStream.read(FilterInputStream.java:133)
                at com.ctc.wstx.io.BaseReader.readBytes(BaseReader.java:155)
                at com.ctc.wstx.io.UTF8Reader.loadMore(UTF8Reader.java:369)
                at com.ctc.wstx.io.UTF8Reader.read(UTF8Reader.java:112)
                at com.ctc.wstx.io.ReaderBootstrapper.initialLoad(ReaderBootstrapper.java:254)
                at com.ctc.wstx.io.ReaderBootstrapper.bootstrapInput(ReaderBootstrapper.java:134)
                at com.ctc.wstx.stax.WstxInputFactory.doCreateSR(WstxInputFactory.java:573)
                at com.ctc.wstx.stax.WstxInputFactory.createSR(WstxInputFactory.java:633)
                at com.ctc.wstx.stax.WstxInputFactory.createSR(WstxInputFactory.java:657)
                at com.ctc.wstx.stax.WstxInputFactory.createXMLStreamReader(WstxInputFactory.java:342)
                at org.apache.cxf.staxutils.StaxUtils.createXMLStreamReader(StaxUtils.java:1725)
                at org.apache.cxf.interceptor.StaxInInterceptor.handleMessage(StaxInInterceptor.java:127)
                at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
                at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
                at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:267)
                at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234)
                at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208)
                at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160)
                at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:216)
                at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:301)
                a.lang.NoSuchMethodError: java.nio.ByteBuffer.limit(I)Ljava/nio/ByteBuffer;t org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:220)
                at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
                at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:276)
                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
                at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
                at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
                at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
                at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
                at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
                at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
                at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
                at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
                at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
                at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
                at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
                at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
                at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1591)
                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)
Comment 1 Mark Thomas 2021-11-25 10:54:36 UTC
From where, exactly, did you obtain your copy of Apache Tomcat 9.0.36?
Comment 2 laszlo.dobrontei 2021-11-25 11:01:18 UTC
It's in the distribution SUSE Linux Enterprise Server 15 SP3
Comment 3 Michael Osipov 2021-11-25 11:03:34 UTC
(In reply to laszlo.dobrontei from comment #2)
> It's in the distribution SUSE Linux Enterprise Server 15 SP3

Then talk to SUSE and try a vanilla Tomcat first.
Comment 4 Michael Osipov 2021-11-25 11:08:03 UTC
They have compiled Tomcat with Java 11 and did not supply: --release=8
Comment 5 Mark Thomas 2021-11-25 11:15:02 UTC
Yep. I've confirmed the official 9.0.36 distribution was compiled with Java 8.
Comment 6 laszlo.dobrontei 2021-11-25 11:21:46 UTC
OK, I see. That explains.
Comment 7 Remy Maucherat 2021-11-25 11:53:48 UTC
I am also very careful about using Java 8 to build 9.0.x ...
Comment 8 laszlo.dobrontei 2021-11-25 12:04:14 UTC
Thank you for looking into. I will let SUSE the issue.

Building with JDK8 should fix the issue.

However the BUILDING.txt doesn't mention JDK8 as requirement and the code actually does not compile with higher JDK if I add "--release=8" to the "compile" target in build.xml.