Неожиданная ошибка при использовании Apache HTTP Commons на Fat Jar - PullRequest
0 голосов
/ 17 мая 2019

У меня есть банка, работающая на запатентованном движке, который выдает неожиданное исключение.

Я пытаюсь выполнить приведенный ниже код

  private void sendRequest(HttpUriRequest request) {
    try (CloseableHttpClient client = HttpClients.createDefault()) {
      CloseableHttpResponse response = client.execute(request);
      if (isStatusSuccess(response.getStatusLine().getStatusCode())) {
        throw new RuntimeException(String.format("HTTP Status code: %d", response.getStatusLine().getStatusCode()));
      }
    } catch (IOException e) {
      throw new IllegalStateException("Could not execute HTTP POST!", e);
    }
  }

Но ниже выдается исключение.

May 16, 2019 9:17:55 PM org.apache.http.conn.util.PublicSuffixMatcherLoader getDefault
WARNING: Failure loading public suffix list from default resource
java.io.IOException: Stream closed
    at java.util.zip.InflaterInputStream.ensureOpen(InflaterInputStream.java:67)
    at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:142)
    at java.io.FilterInputStream.read(FilterInputStream.java:133)
    at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
    at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
    at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
    at java.io.InputStreamReader.read(InputStreamReader.java:184)
    at java.io.BufferedReader.fill(BufferedReader.java:161)
    at java.io.BufferedReader.readLine(BufferedReader.java:324)
    at java.io.BufferedReader.readLine(BufferedReader.java:389)
    at org.apache.http.conn.util.PublicSuffixListParser.parseByType(PublicSuffixListParser.java:111)
    at org.apache.http.conn.util.PublicSuffixMatcherLoader.load(PublicSuffixMatcherLoader.java:54)
    at org.apache.http.conn.util.PublicSuffixMatcherLoader.load(PublicSuffixMatcherLoader.java:63)
    at org.apache.http.conn.util.PublicSuffixMatcherLoader.getDefault(PublicSuffixMatcherLoader.java:89)
    at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:949)
    at org.apache.http.impl.client.HttpClients.createDefault(HttpClients.java:56)
    at com....

Баночка упакована как толстая банка, используяassemnly.xml ниже:

<assembly
    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
    <id>dist</id>
    <formats>
        <format>jar</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <dependencySets>
        <dependencySet>
            <excludes>
                <exclude>org.slf4j:slf4j-api</exclude>
            </excludes>
            <outputDirectory>/</outputDirectory>
            <useProjectArtifact>true</useProjectArtifact>
            <unpack>true</unpack>
            <scope>runtime</scope>
        </dependencySet>
    </dependencySets>
</assembly>

Этот код выполняется в изолированном загрузчике классов, мы просто используем URLClassLoader(new URL[] {myJar}), загружаем класс и выполняем его.

В чем причинаисключение?Почему этот поток преждевременно закрыт?

...