Maven-Docker java.lang.NoClassDefFoundError:org/apache/http/client/methods/HttpUriRequest
我在两个java类上使用IntelliJ和Maven,这两个类在调试模式下运行良好,但在编译和创建docker映像之后就没有了 当我从推送到DockerHub存储库的图像创建容器(使用docker compose)时,我会在de docker日志中收到此错误Maven-Docker java.lang.NoClassDefFoundError:org/apache/http/client/methods/HttpUriRequest,java,docker,maven,Java,Docker,Maven,我在两个java类上使用IntelliJ和Maven,这两个类在调试模式下运行良好,但在编译和创建docker映像之后就没有了 当我从推送到DockerHub存储库的图像创建容器(使用docker compose)时,我会在de docker日志中收到此错误 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/client/methods/HttpUriRequest a
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/client/methods/HttpUriRequest
at com.myproject.station.StationService.createWorkers(StationService.java:38)
...
Caused by: java.lang.ClassNotFoundException: org.apache.http.client.methods.HttpUriRequest
在pom.xml中,我列出了org.apache.httpcomponents的依赖项httpclient和httpcore:
这个插件呢
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
然后我使用此命令按下图像
docker push myrepository/station:2.0
创建此图像的容器时出错。
我无法理解错误是否为:
- 关于pom.xml
- 或者我如何编译(和创建)图像
- 或者,如果没有正确运行,则将映像推送到存储库(然后它总是得到错误的第一个映像)
<groupId>com.myproyect</groupId>
<artifactId>http-opendata</artifactId>
<version>2.0</version>
<properties>
<avro.version>1.8.2</avro.version>
<kafka.version>0.11.0.1</kafka.version>
<confluent.version>3.3.1</confluent.version>
<jib-maven-plugin.version>2.5.0</jib-maven-plugin.version>
</properties>
<!--necessary to resolve confluent dependencies-->
<repositories>
<repository>
<id>confluent</id>
<url>http://packages.confluent.io/maven/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.12</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.13</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.13</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20140107</version>
</dependency>
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.20</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.6.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.avro/avro -->
<dependency>
<groupId>org.apache.avro</groupId>
<artifactId>avro</artifactId>
<version>${avro.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.kafka/kafka-clients -->
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>${kafka.version}</version>
</dependency>
<dependency>
<groupId>io.confluent</groupId>
<artifactId>kafka-avro-serializer</artifactId>
<version>${confluent.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.cloud.tools/jib-maven-plugin -->
<dependency>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>1.6.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<artifactSet>
<excludes>
<exclude>classworlds:classworlds</exclude>
<exclude>junit:junit</exclude>
<exclude>jmock:*</exclude>
<exclude>*:xml-apis</exclude>
<exclude>org.apache.maven:lib:tests</exclude>
<exclude>log4j:log4j:jar:</exclude>
</excludes>
</artifactSet>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<!--for specific record-->
<plugin>
<groupId>org.apache.avro</groupId>
<artifactId>avro-maven-plugin</artifactId>
<version>${avro.version}</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>schema</goal>
<goal>protocol</goal>
<goal>idl-protocol</goal>
</goals>
<configuration>
<sourceDirectory>${project.basedir}/src/main/resources/avro</sourceDirectory>
<stringType>String</stringType>
<createSetters>false</createSetters>
<enableDecimalLogicalType>true</enableDecimalLogicalType>
<fieldVisibility>private</fieldVisibility>
</configuration>
</execution>
</executions>
</plugin>
<!--force discovery of generated classes-->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>target/generated-sources/avro</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>${jib-maven-plugin.version}</version>
<configuration>
<container>
<mainClass>com.myproject.StationHost</mainClass>
<args>
<arg>/opt/myproyect/station/properties</arg>
</args>
</container>
<from>
<image>openjdk:8u212-jre</image>
</from>
<to>
<image>soits/station:${project.version}</image>
</to>
<extraDirectories>
<paths>/opt/myproject/station</paths> <!-- Copies files from 'src/main/custom-extra-dir' -->
<permissions>
<permission>
<file>/opt/myproject/station/properties</file>
<mode>755</mode> <!-- Read/write/execute for owner, read/execute for group/other -->
</permission>
</permissions>
</extraDirectories>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
有什么建议吗?我找不到解决这个问题的办法。最后一个解决方法是对httpcore和httpclient使用相同的版本4.4.1。提前谢谢!
<groupId>com.myproyect</groupId>
<artifactId>http-opendata</artifactId>
<version>2.0</version>
<properties>
<avro.version>1.8.2</avro.version>
<kafka.version>0.11.0.1</kafka.version>
<confluent.version>3.3.1</confluent.version>
<jib-maven-plugin.version>2.5.0</jib-maven-plugin.version>
</properties>
<!--necessary to resolve confluent dependencies-->
<repositories>
<repository>
<id>confluent</id>
<url>http://packages.confluent.io/maven/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.12</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.13</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.13</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20140107</version>
</dependency>
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.20</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.6.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.avro/avro -->
<dependency>
<groupId>org.apache.avro</groupId>
<artifactId>avro</artifactId>
<version>${avro.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.kafka/kafka-clients -->
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>${kafka.version}</version>
</dependency>
<dependency>
<groupId>io.confluent</groupId>
<artifactId>kafka-avro-serializer</artifactId>
<version>${confluent.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.cloud.tools/jib-maven-plugin -->
<dependency>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>1.6.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<artifactSet>
<excludes>
<exclude>classworlds:classworlds</exclude>
<exclude>junit:junit</exclude>
<exclude>jmock:*</exclude>
<exclude>*:xml-apis</exclude>
<exclude>org.apache.maven:lib:tests</exclude>
<exclude>log4j:log4j:jar:</exclude>
</excludes>
</artifactSet>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<!--for specific record-->
<plugin>
<groupId>org.apache.avro</groupId>
<artifactId>avro-maven-plugin</artifactId>
<version>${avro.version}</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>schema</goal>
<goal>protocol</goal>
<goal>idl-protocol</goal>
</goals>
<configuration>
<sourceDirectory>${project.basedir}/src/main/resources/avro</sourceDirectory>
<stringType>String</stringType>
<createSetters>false</createSetters>
<enableDecimalLogicalType>true</enableDecimalLogicalType>
<fieldVisibility>private</fieldVisibility>
</configuration>
</execution>
</executions>
</plugin>
<!--force discovery of generated classes-->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>target/generated-sources/avro</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>${jib-maven-plugin.version}</version>
<configuration>
<container>
<mainClass>com.myproject.StationHost</mainClass>
<args>
<arg>/opt/myproyect/station/properties</arg>
</args>
</container>
<from>
<image>openjdk:8u212-jre</image>
</from>
<to>
<image>soits/station:${project.version}</image>
</to>
<extraDirectories>
<paths>/opt/myproject/station</paths> <!-- Copies files from 'src/main/custom-extra-dir' -->
<permissions>
<permission>
<file>/opt/myproject/station/properties</file>
<mode>755</mode> <!-- Read/write/execute for owner, read/execute for group/other -->
</permission>
</permissions>
</extraDirectories>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
[INFO]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ http-opendata ---
[INFO] com.consorcio.aguas:http-opendata:jar:2.0
[INFO] +- org.apache.httpcomponents:httpclient:jar:4.5.12:compile
[INFO] | +- commons-logging:commons-logging:jar:1.2:compile
[INFO] | \- commons-codec:commons-codec:jar:1.11:compile
[INFO] +- org.apache.httpcomponents:httpcore:jar:4.4.13:compile
[INFO] +- org.apache.commons:commons-compress:jar:1.13:compile
[INFO] +- org.json:json:jar:20140107:compile
[INFO] +- com.jayway.jsonpath:json-path:jar:2.4.0:compile
[INFO] | +- net.minidev:json-smart:jar:2.3:compile
[INFO] | | \- net.minidev:accessors-smart:jar:1.2:compile
[INFO] | \- org.slf4j:slf4j-api:jar:1.7.25:compile
[INFO] +- mysql:mysql-connector-java:jar:8.0.20:compile
[INFO] | \- com.google.protobuf:protobuf-java:jar:3.6.1:compile
[INFO] +- org.apache.logging.log4j:log4j-core:jar:2.6.1:compile
[INFO] +- org.apache.logging.log4j:log4j-api:jar:2.6.1:compile
[INFO] +- org.apache.avro:avro:jar:1.8.2:compile
[INFO] | +- org.codehaus.jackson:jackson-core-asl:jar:1.9.13:compile
[INFO] | +- org.codehaus.jackson:jackson-mapper-asl:jar:1.9.13:compile
[INFO] | +- com.thoughtworks.paranamer:paranamer:jar:2.7:compile
[INFO] | +- org.xerial.snappy:snappy-java:jar:1.1.1.3:compile
[INFO] | \- org.tukaani:xz:jar:1.5:compile
[INFO] +- org.apache.kafka:kafka-clients:jar:0.11.0.1:compile
[INFO] | \- net.jpountz.lz4:lz4:jar:1.3.0:compile
[INFO] +- io.confluent:kafka-avro-serializer:jar:3.3.1:compile
[INFO] | +- io.confluent:kafka-schema-registry-client:jar:3.3.1:compile
[INFO] | | \- org.slf4j:slf4j-log4j12:jar:1.7.21:compile
[INFO] | | \- log4j:log4j:jar:1.2.17:compile
[INFO] | +- io.confluent:common-config:jar:3.3.1:compile
[INFO] | \- io.confluent:common-utils:jar:3.3.1:compile
[INFO] | +- org.apache.zookeeper:zookeeper:jar:3.4.10:compile
[INFO] | | +- jline:jline:jar:0.9.94:compile
[INFO] | | \- io.netty:netty:jar:3.10.5.Final:compile
[INFO] | \- com.101tec:zkclient:jar:0.10:compile
[INFO] +- com.google.code.gson:gson:jar:2.8.5:compile
[INFO] \- com.google.cloud.tools:jib-maven-plugin:jar:1.6.1:compile
[INFO] +- com.google.http-client:google-http-client:jar:1.27.0:runtime
[INFO] | +- com.google.code.findbugs:jsr305:jar:3.0.2:runtime
[INFO] | \- com.google.j2objc:j2objc-annotations:jar:1.1:runtime
[INFO] +- com.google.auth:google-auth-library-oauth2-http:jar:0.16.2:runtime
[INFO] | +- com.google.auth:google-auth-library-credentials:jar:0.16.2:runtime
[INFO] | \- com.google.http-client:google-http-client-jackson2:jar:1.30.1:runtime
[INFO] +- com.google.guava:guava:jar:28.0-jre:runtime
[INFO] | +- com.google.guava:failureaccess:jar:1.0.1:runtime
[INFO] | +- com.google.guava:listenablefuture:jar:9999.0-empty-to-avoid-conflict-with-guava:runtime
[INFO] | +- org.checkerframework:checker-qual:jar:2.8.1:runtime
[INFO] | +- com.google.errorprone:error_prone_annotations:jar:2.3.2:runtime
[INFO] | \- org.codehaus.mojo:animal-sniffer-annotations:jar:1.17:runtime
[INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.9.9.2:compile
[INFO] | +- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile
[INFO] | \- com.fasterxml.jackson.core:jackson-core:jar:2.9.9:compile
[INFO] +- org.ow2.asm:asm:jar:7.0:compile
[INFO] +- org.apache.maven:maven-plugin-api:jar:3.5.2:runtime
[INFO] | +- org.apache.maven:maven-model:jar:3.5.2:runtime
[INFO] | +- org.apache.maven:maven-artifact:jar:3.5.2:runtime
[INFO] | +- org.eclipse.sisu:org.eclipse.sisu.plexus:jar:0.3.3:runtime
[INFO] | | \- javax.enterprise:cdi-api:jar:1.0:runtime
[INFO] | | \- javax.annotation:jsr250-api:jar:1.0:runtime
[INFO] | +- org.codehaus.plexus:plexus-utils:jar:3.1.0:runtime
[INFO] | \- org.codehaus.plexus:plexus-classworlds:jar:2.5.2:runtime
[INFO] \- org.apache.maven:maven-core:jar:3.5.2:runtime
[INFO] +- org.apache.maven:maven-settings:jar:3.5.2:runtime
[INFO] +- org.apache.maven:maven-settings-builder:jar:3.5.2:runtime
[INFO] | +- org.codehaus.plexus:plexus-interpolation:jar:1.24:runtime
[INFO] | \- org.sonatype.plexus:plexus-sec-dispatcher:jar:1.4:runtime
[INFO] | \- org.sonatype.plexus:plexus-cipher:jar:1.4:runtime
[INFO] +- org.apache.maven:maven-builder-support:jar:3.5.2:runtime
[INFO] +- org.apache.maven:maven-repository-metadata:jar:3.5.2:runtime
[INFO] +- org.apache.maven:maven-model-builder:jar:3.5.2:runtime
[INFO] +- org.apache.maven:maven-resolver-provider:jar:3.5.2:runtime
[INFO] +- org.apache.maven.resolver:maven-resolver-impl:jar:1.1.0:runtime
[INFO] +- org.apache.maven.resolver:maven-resolver-api:jar:1.1.0:runtime
[INFO] +- org.apache.maven.resolver:maven-resolver-spi:jar:1.1.0:runtime
[INFO] +- org.apache.maven.resolver:maven-resolver-util:jar:1.1.0:runtime
[INFO] +- org.apache.maven.shared:maven-shared-utils:jar:3.1.0:runtime
[INFO] | \- commons-io:commons-io:jar:2.5:runtime
[INFO] +- org.eclipse.sisu:org.eclipse.sisu.inject:jar:0.3.3:runtime
[INFO] +- com.google.inject:guice:jar:no_aop:4.0:runtime
[INFO] | \- aopalliance:aopalliance:jar:1.0:runtime
[INFO] +- javax.inject:javax.inject:jar:1:runtime
[INFO] +- org.codehaus.plexus:plexus-component-annotations:jar:1.7.1:runtime
[INFO] \- org.apache.commons:commons-lang3:jar:3.5:runtime
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------