Uploaded image for project: 'HttpComponents HttpCore'
  1. HttpComponents HttpCore
  2. HTTPCORE-737

HttpClient not working with Java 8 runtime

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Won't Fix
    • 5.2.1
    • None
    • HttpCore
    • None

    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.

      Attachments

        Activity

          People

            Unassigned Unassigned
            akatkere Arun Katkere
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Time Tracking

                Estimated:
                Original Estimate - Not Specified
                Not Specified
                Remaining:
                Remaining Estimate - 0h
                0h
                Logged:
                Time Spent - 1h 10m
                1h 10m