When I update our application at work from 4.5.5 to 4.5.6, this happens and
breaks the app:
2018-07-09 12:47:45,862 INFO [main][o.m.d.connection] Opened connection
[connectionId{localValue:2, serverValue:2}] to localhost:1106
Exception in thread "HMP-ListeningIoReactor-1" java.lang.NoSuchMethodError:
java.nio.ByteBuffer.flip()Ljava/nio/ByteBuffer;
at
org.apache.http.nio.util.ExpandableBuffer.setOutputMode(ExpandableBuffer.java:88)
at
org.apache.http.nio.util.ExpandableBuffer.hasData(ExpandableBuffer.java:169)
at
org.apache.http.impl.nio.DefaultNHttpServerConnection.consumeInput(DefaultNHttpServerConnection.java:299)
at
org.apache.http.impl.nio.DefaultHttpServerIODispatch.onInputReady(DefaultHttpServerIODispatch.java:243)
at
org.apache.http.impl.nio.DefaultHttpServerIODispatch.onInputReady(DefaultHttpServerIODispatch.java:57)
at
org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:114)
at
org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:162)
at
org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:337)
at
org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:315)
at
org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:276)
at
org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104)
at
org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:588)
at java.lang.Thread.run(Unknown Source)
2018-07-09 12:47:46,072 ERROR
[com.rs.seagull.httpmonitor.test.NHttpReverseProxyTestRule$1][c.r.s.h.NHttpReverseProxy]
Exception caught in com.rs.seagull.httpmonitor.NHttpReverseProxy:
org.apache.http.nio.reactor.IOReactorException: I/O dispatch worker
terminated abnormally
org.apache.http.nio.reactor.IOReactorException: I/O dispatch worker
terminated abnormally
at
org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor.execute(AbstractMultiworkerIOReactor.java:356)
~[httpcore-nio-4.4.10.jar:4.4.10]
at
com.rs.seagull.httpmonitor.NHttpReverseProxy.init(NHttpReverseProxy.java:2208)
~[classes/:?]
at
com.rs.seagull.httpmonitor.NHttpReverseProxy.goLoop(NHttpReverseProxy.java:2012)
~[classes/:?]
at
com.rs.seagull.httpmonitor.test.NHttpReverseProxyTestRule$1.lambda$0(NHttpReverseProxyTestRule.java:133)
~[test-classes/:?]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_172]
Caused by: java.lang.NoSuchMethodError:
java.nio.ByteBuffer.flip()Ljava/nio/ByteBuffer;
at
org.apache.http.nio.util.ExpandableBuffer.setOutputMode(ExpandableBuffer.java:88)
~[httpcore-nio-4.4.10.jar:4.4.10]
at
org.apache.http.nio.util.ExpandableBuffer.hasData(ExpandableBuffer.java:169)
~[httpcore-nio-4.4.10.jar:4.4.10]
at
org.apache.http.impl.nio.DefaultNHttpServerConnection.consumeInput(DefaultNHttpServerConnection.java:299)
~[httpcore-nio-4.4.10.jar:4.4.10]
at
org.apache.http.impl.nio.DefaultHttpServerIODispatch.onInputReady(DefaultHttpServerIODispatch.java:243)
~[httpcore-nio-4.4.10.jar:4.4.10]
at
org.apache.http.impl.nio.DefaultHttpServerIODispatch.onInputReady(DefaultHttpServerIODispatch.java:57)
~[httpcore-nio-4.4.10.jar:4.4.10]
at
org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:114)
~[httpcore-nio-4.4.10.jar:4.4.10]
at
org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:162)
~[httpcore-nio-4.4.10.jar:4.4.10]
at
org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:337)
~[httpcore-nio-4.4.10.jar:4.4.10]
at
org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:315)
~[httpcore-nio-4.4.10.jar:4.4.10]
at
org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:276)
~[httpcore-nio-4.4.10.jar:4.4.10]
at
org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104)
~[httpcore-nio-4.4.10.jar:4.4.10]
at
org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:588)
~[httpcore-nio-4.4.10.jar:4.4.10]
... 1 more
The app has already been updated from HttpCore 4.4.9 to 4.4.10 without code
changes. The app is built on Java 8.
*Nothing else* is changed aside from changing the Maven property
for httpclient from 4.5.5 to 4.5.6.
According to https://github.com/plasma-umass/doppio/issues/497, this can be
fixed with a class cast in
org.apache.http.nio.util.ExpandableBuffer.setOutputMode(ExpandableBuffer.java:88)
The link suggests that this happens when you use Java 9 or later to build.
What version was used to build 4.5.6?
Thank you,
Gary