MVN构建失败与X射线

时间:2020-07-17 12:02:10

标签: aws-lambda quarkus aws-xray

我正在尝试https://github.com/quarkusio/quarkus-quickstarts上的funqy-amazon-lambda-http-quickstart。我想尝试XRay支持并添加了

    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-amazon-lambda-xray</artifactId>
    </dependency> 

但是在构建项目时出现如下错误。我确定我缺少一些配置。我尝试在Quarkus搜索文档,但没有成功。

[INFO] [io.quarkus.deployment.pkg.steps.NativeImageBuildStep] docker run -v /Users/jay/dev/java-lambda/quarkus-quickstarts/funqy-quickstarts/funqy-amazon-lambda-http-quickstart/target/funqy-amazon-lambda-http-quickstart-1.0-SNAPSHOT-native-image-source-jar:/project:z --env LANG=C --rm quay.io/quarkus/ubi-quarkus-native-image:20.1.0-java11 -J-Djava.util.logging.manager=org.jboss.logmanager.LogManager -J-Dsun.nio.ch.maxUpdateArraySize=100 -J-Dio.netty.leakDetection.level=DISABLED -J-Dio.netty.allocator.maxOrder=1 -J-Dvertx.logger-delegate-factory-class-name=io.quarkus.vertx.core.runtime.VertxLogDelegateFactory -J-Dvertx.disableDnsResolver=true -J-Duser.language=en -J-Dfile.encoding=UTF-8 --initialize-at-build-time= -H:InitialCollectionPolicy=com.oracle.svm.core.genscavenge.CollectionPolicy$BySpaceAndTime -H:+JNI -jar funqy-amazon-lambda-http-quickstart-1.0-SNAPSHOT-runner.jar -H:FallbackThreshold=0 -H:+ReportExceptionStackTraces -H:-AddAllCharsets -H:-IncludeAllTimeZones -H:EnableURLProtocols=http --no-server -H:-UseServiceLoaderFeature -H:+StackTrace funqy-amazon-lambda-http-quickstart-1.0-SNAPSHOT-runner
-H:IncludeAllTimeZones and -H:IncludeTimeZones are now deprecated. Native-image includes all timezonesby default.
[funqy-amazon-lambda-http-quickstart-1.0-SNAPSHOT-runner:24]    classlist:   9,874.79 ms,  0.94 GB
[funqy-amazon-lambda-http-quickstart-1.0-SNAPSHOT-runner:24]        (cap):   1,127.41 ms,  0.94 GB
[funqy-amazon-lambda-http-quickstart-1.0-SNAPSHOT-runner:24]        setup:   3,086.63 ms,  0.94 GB
11:32:19,929 INFO  [org.jbo.threads] JBoss Threads version 3.1.1.Final
[funqy-amazon-lambda-http-quickstart-1.0-SNAPSHOT-runner:24]     (clinit):     796.70 ms,  1.11 GB
[funqy-amazon-lambda-http-quickstart-1.0-SNAPSHOT-runner:24]   (typeflow):  16,029.95 ms,  1.11 GB
[funqy-amazon-lambda-http-quickstart-1.0-SNAPSHOT-runner:24]    (objects):  25,406.30 ms,  1.11 GB
[funqy-amazon-lambda-http-quickstart-1.0-SNAPSHOT-runner:24]   (features):     698.70 ms,  1.11 GB
[funqy-amazon-lambda-http-quickstart-1.0-SNAPSHOT-runner:24]     analysis:  45,576.08 ms,  1.11 GB
Error: Unsupported features in 18 methods
Detailed message:
Error: Class initialization of com.amazonaws.xray.AWSXRayRecorderBuilder failed. Use the option --initialize-at-run-time=com.amazonaws.xray.AWSXRayRecorderBuilder to explicitly request delayed initialization of this class.
Original exception that caused the problem: java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
        at com.amazonaws.xray.AWSXRayRecorderBuilder.<clinit>(AWSXRayRecorderBuilder.java:34)
        at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized0(Native Method)
        at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized(Unsafe.java:1042)
        at jdk.unsupported/sun.misc.Unsafe.ensureClassInitialized(Unsafe.java:698)
        at com.oracle.svm.hosted.classinitialization.ConfigurableClassInitialization.ensureClassInitialized(ConfigurableClassInitialization.java:169)
        at com.oracle.svm.hosted.classinitialization.ConfigurableClassInitialization.computeInitKindAndMaybeInitializeClass(ConfigurableClassInitialization.java:586)
        at com.oracle.svm.hosted.classinitialization.ConfigurableClassInitialization.computeInitKindAndMaybeInitializeClass(ConfigurableClassInitialization.java:132)
        at com.oracle.svm.hosted.classinitialization.ConfigurableClassInitialization.maybeInitializeHosted(ConfigurableClassInitialization.java:160)
        at com.oracle.svm.hosted.SVMHost.registerType(SVMHost.java:223)
        at com.oracle.graal.pointsto.meta.AnalysisUniverse.createType(AnalysisUniverse.java:264)

1 个答案:

答案 0 :(得分:2)

X-Ray SDK使用Apache Commons日志记录库发出日志消息。它从AWS开发工具包过渡地获取此依赖项。我不熟悉quarkus库,但是我能想到的唯一原因是如果某个地方的pom.xml被明确排除了Apache commons日志库被传递而导致的错误。应该起作用的解决方法是手动将依赖项添加到您的类路径中:

<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.1.3</version>
</dependency>