[
https://issues.apache.org/jira/browse/HTTPCORE-737?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Arun Katkere updated HTTPCORE-737:
----------------------------------
Description:
When we try to run HttpClient 5.2.1 with Java 8 runtime, it fails with:
{{java.lang.NoSuchMethodError: java.nio.ByteBuffer.flip()Ljava/nio/ByteBuffer;}}
{{at org.apache.hc.core5.net.PercentCodec.decode(PercentCodec.java:155)}}
{{at org.apache.hc.core5.net.PercentCodec.decode(PercentCodec.java:160)}}
{{at org.apache.hc.core5.net.URIBuilder.parsePath(URIBuilder.java:277)}}
{{at org.apache.hc.core5.net.URIBuilder.digestURI(URIBuilder.java:407)}}
{{at org.apache.hc.core5.net.URIBuilder.<init>(URIBuilder.java:134)}}
{{at org.apache.hc.core5.net.URIBuilder.<init>(URIBuilder.java:106)}}
{{at
org.apache.hc.client5.http.impl.RequestSupport.extractPathPrefix(RequestSupport.java:49)}}
{{at
org.apache.hc.client5.http.impl.classic.ProtocolExec.execute(ProtocolExec.java:152)}}
{{at
org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)}}
{{at
org.apache.hc.client5.http.impl.classic.HttpRequestRetryExec.execute(HttpRequestRetryExec.java:96)}}
{{at
org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)}}
{{at
org.apache.hc.client5.http.impl.classic.ContentCompressionExec.execute(ContentCompressionExec.java:152)}}
{{at
org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)}}
{{at
org.apache.hc.client5.http.impl.classic.RedirectExec.execute(RedirectExec.java:115)}}
{{at
org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)}}
{{at
org.apache.hc.client5.http.impl.classic.InternalHttpClient.doExecute(InternalHttpClient.java:170)}}
{{at
org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:123)}}
It runs fine in a Java 11 runtime.
Java 8 java.nio.ByteBuffer does not define “{{{}java.nio.ByteBuffer flip({}}})”
method. Instead it just inherits “{{{}java.nio.Buffer flip(){}}}” from its
super class. However, Java 9 and newer versions have the additional flip
method. I believe if pom.xml contains
{{<maven.compiler.release>8</maven.compiler.release>}} it should fix this
issue. Alternatively, this component can be built with Java 8.
According to the documentation
[https://hc.apache.org/httpcomponents-client-5.2.x/quickstart.html] "HttpClient
5.2 requires Java 1.8 or newer." so the expectation here is that it works with
Java 1.8/8 runtime.
was:
When we try to run HttpClient 5.2.1 with Java 8 runtime, it fails with:
java.lang.NoSuchMethodError: java.nio.ByteBuffer.flip()Ljava/nio/ByteBuffer;
at org.apache.hc.core5.net.PercentCodec.decode(PercentCodec.java:155)
at org.apache.hc.core5.net.PercentCodec.decode(PercentCodec.java:160)
at org.apache.hc.core5.net.URIBuilder.parsePath(URIBuilder.java:277)
at org.apache.hc.core5.net.URIBuilder.digestURI(URIBuilder.java:407)
at org.apache.hc.core5.net.URIBuilder.<init>(URIBuilder.java:134)
at org.apache.hc.core5.net.URIBuilder.<init>(URIBuilder.java:106)
at
org.apache.hc.client5.http.impl.RequestSupport.extractPathPrefix(RequestSupport.java:49)
at
org.apache.hc.client5.http.impl.classic.ProtocolExec.execute(ProtocolExec.java:152)
at
org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
at
org.apache.hc.client5.http.impl.classic.HttpRequestRetryExec.execute(HttpRequestRetryExec.java:96)
at
org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
at
org.apache.hc.client5.http.impl.classic.ContentCompressionExec.execute(ContentCompressionExec.java:152)
at
org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
at
org.apache.hc.client5.http.impl.classic.RedirectExec.execute(RedirectExec.java:115)
at
org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
at
org.apache.hc.client5.http.impl.classic.InternalHttpClient.doExecute(InternalHttpClient.java:170)
at
org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:123)
It runs fine in a Java 11 runtime.
Java 8 java.nio.ByteBuffer does not define “java.nio.ByteBuffer flip()” method.
Instead it just inherits “java.nio.Buffer flip()” from its super class.
However, Java 9 and newer versions have the additional flip method. I believe
if pom.xml contains <maven.compiler.release>8</maven.compiler.release> it
should fix this issue. Alternatively, this component can be built with Java 8.
According to the documentation
[https://hc.apache.org/httpcomponents-client-5.2.x/quickstart.html] "HttpClient
5.2 requires Java 1.8 or newer." so the expectation here is that it works with
Java 1.8/8 runtime.
> HttpClient not working with Java 8 runtime
> ------------------------------------------
>
> Key: HTTPCORE-737
> URL: https://issues.apache.org/jira/browse/HTTPCORE-737
> Project: HttpComponents HttpCore
> Issue Type: Bug
> Components: HttpCore
> Affects Versions: 5.2.1
> Reporter: Arun Katkere
> Priority: Major
>
> When we try to run HttpClient 5.2.1 with Java 8 runtime, it fails with:
>
> {{java.lang.NoSuchMethodError:
> java.nio.ByteBuffer.flip()Ljava/nio/ByteBuffer;}}
> {{at org.apache.hc.core5.net.PercentCodec.decode(PercentCodec.java:155)}}
> {{at org.apache.hc.core5.net.PercentCodec.decode(PercentCodec.java:160)}}
> {{at org.apache.hc.core5.net.URIBuilder.parsePath(URIBuilder.java:277)}}
> {{at org.apache.hc.core5.net.URIBuilder.digestURI(URIBuilder.java:407)}}
> {{at org.apache.hc.core5.net.URIBuilder.<init>(URIBuilder.java:134)}}
> {{at org.apache.hc.core5.net.URIBuilder.<init>(URIBuilder.java:106)}}
> {{at
> org.apache.hc.client5.http.impl.RequestSupport.extractPathPrefix(RequestSupport.java:49)}}
> {{at
> org.apache.hc.client5.http.impl.classic.ProtocolExec.execute(ProtocolExec.java:152)}}
> {{at
> org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)}}
> {{at
> org.apache.hc.client5.http.impl.classic.HttpRequestRetryExec.execute(HttpRequestRetryExec.java:96)}}
> {{at
> org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)}}
> {{at
> org.apache.hc.client5.http.impl.classic.ContentCompressionExec.execute(ContentCompressionExec.java:152)}}
> {{at
> org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)}}
> {{at
> org.apache.hc.client5.http.impl.classic.RedirectExec.execute(RedirectExec.java:115)}}
> {{at
> org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)}}
> {{at
> org.apache.hc.client5.http.impl.classic.InternalHttpClient.doExecute(InternalHttpClient.java:170)}}
> {{at
> org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:123)}}
>
> It runs fine in a Java 11 runtime.
>
> Java 8 java.nio.ByteBuffer does not define “{{{}java.nio.ByteBuffer
> flip({}}})” method. Instead it just inherits “{{{}java.nio.Buffer flip(){}}}”
> from its super class. However, Java 9 and newer versions have the additional
> flip method. I believe if pom.xml contains
> {{<maven.compiler.release>8</maven.compiler.release>}} it should fix this
> issue. Alternatively, this component can be built with Java 8.
> According to the documentation
> [https://hc.apache.org/httpcomponents-client-5.2.x/quickstart.html]
> "HttpClient 5.2 requires Java 1.8 or newer." so the expectation here is that
> it works with Java 1.8/8 runtime.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]