【问题标题】:Error:org.apache.commons.logging.LogFactoryjava.lang.NoClassDefFoundError for application build with micronaut-bom1.2.10, graal19.2.1 & aws-sdk2.10.56使用 micronaut-bom1.2.10、graal19.2.1 和 aws-sdk2.10.56 构建应用程序时出现错误:org.apache.commons.logging.LogFactoryjava.lang.NoClassDefFoundError
【发布时间】:2020-02-06 12:49:31
【问题描述】:

使用 micronaut bom 1.2.10 版本以及 software.amazon.awssdk:lambda:2.10.56 和 software.amazon.awssdk:s3:2.10.56 依赖项创建了一个应用程序,这些依赖项具有从 s3 存储和检索数据的功能使用 graal 19.2.1 创建原生镜像。 本机映像已成功创建,但是当我尝试访问端点时,它因以下异常而失败:

failed: org.apache.commons.logging.LogFactoryjava.lang.NoClassDefFoundError: org.apache.commons.logging.LogFactory

以及在创建 S3 客户端时出现的一系列异常。 该异常在以下点也失败了:

failed: Could not initialize class software.amazon.awssdk.http.apache.internal.conn.SdkTlsSocketFactoryjava.lang.NoClassDefFoundError: Could not initialize class software.amazon.awssdk.http.apache.internal.conn.SdkTlsSocketFactory

S3Client 代码:

S3Client s3Client = S3Client.builder().region(getRegion()).build();

build-native-image.sh

${GRAALVM_HOME}/bin/native-image --no-server -cp example-function-*-all.jar
-H:IncludeResources="git.properties"
-H:IncludeResources="logback.xml"
-H:IncludeResources="application.properties" \

【问题讨论】:

    标签: aws-sdk micronaut graalvm-native-image


    【解决方案1】:

    所以通过在 build.gradle 中添加以下配置解决了这个问题:

    allprojects {
        configurations {
            all {
                exclude(group = "commons-logging")
            }
        }
    }
    

    并在依赖项中添加: compile group: 'org.slf4j', name: 'jcl-over-slf4j', version: '1.7.30'

    我希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      我在运行测试时遇到了同样的问题,NoClassDefFoundError 完全相同,但在使用 AWS sts 和 secretsmanager 库时。我实际上可以通过仅包含 jcl-over-slf4j 依赖项来使其工作,而使用 slf4j-api 依赖项时会发生错误。我不需要排除commons-logging。 maven pom.xml 中的依赖片段有效:

      <dependencyManagement>
              <dependencies>
                  <dependency>
                      <groupId>software.amazon.awssdk</groupId>
                      <artifactId>bom</artifactId>
                      <version>2.17.89</version>
                      <type>pom</type>
                      <scope>import</scope>
                  </dependency>
              </dependencies>
          </dependencyManagement>
      
          <dependencies>
              <dependency>
                  <groupId>software.amazon.awssdk</groupId>
                  <artifactId>secretsmanager</artifactId>
              </dependency>
              <dependency>
                  <groupId>software.amazon.awssdk</groupId>
                  <artifactId>sts</artifactId>
              </dependency>
              <dependency>
                  <groupId>junit</groupId>
                  <artifactId>junit</artifactId>
                  <scope>test</scope>
              </dependency>
              <dependency>
                  <groupId>org.slf4j</groupId>
                  <artifactId>jcl-over-slf4j</artifactId>
              </dependency>
          </dependencies>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-29
        • 1970-01-01
        • 1970-01-01
        • 2022-06-15
        • 2022-07-04
        • 2019-04-05
        • 2023-03-19
        • 2019-03-20
        相关资源
        最近更新 更多