Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
com.amazonaws.transform.JsonErrorUnmarshaller:method<;初始化>;(Ljava/lang/Class;)未找到V_Java_Amazon Web Services_Logback_Amazon Cloudwatch_Amazon Cloudwatchlogs - Fatal编程技术网

com.amazonaws.transform.JsonErrorUnmarshaller:method<;初始化>;(Ljava/lang/Class;)未找到V

com.amazonaws.transform.JsonErrorUnmarshaller:method<;初始化>;(Ljava/lang/Class;)未找到V,java,amazon-web-services,logback,amazon-cloudwatch,amazon-cloudwatchlogs,Java,Amazon Web Services,Logback,Amazon Cloudwatch,Amazon Cloudwatchlogs,我们正在使用一个名为logback ext cloudwatch appender的库将基于logback的日志发送到AWS cloudwatch。这就是pom.xml文件中的依赖关系 <dependency> <groupId>org.eluder.logback</groupId> <artifactId>logback-ext-cloudwatch-appender</artifactId>

我们正在使用一个名为logback ext cloudwatch appender的库将基于logback的日志发送到AWS cloudwatch。这就是pom.xml文件中的依赖关系

    <dependency>
        <groupId>org.eluder.logback</groupId>
        <artifactId>logback-ext-cloudwatch-appender</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>

org.eluder.logback
logback ext cloudwatch appender
1.0-快照
几天前,这些错误开始出现在我们的日志中

java.lang.NoSuchMethodError: com.amazonaws.transform.JsonErrorUnmarshaller: method <init>(Ljava/lang/Class;)V not found
    at com.amazonaws.services.logs.model.transform.InvalidParameterExceptionUnmarshaller.<init>(InvalidParameterExceptionUnmarshaller.java:26)
    at com.amazonaws.services.logs.AWSLogsClient.init(AWSLogsClient.java:280)
    at com.amazonaws.services.logs.AWSLogsClient.<init>(AWSLogsClient.java:275)
    at com.amazonaws.services.logs.AWSLogsClient.<init>(AWSLogsClient.java:248)
    at org.eluder.logback.ext.cloudwatch.appender.AbstractCloudWatchAppender.doStart(AbstractCloudWatchAppender.java:100)
    at org.eluder.logback.ext.aws.core.AbstractAwsEncodingStringAppender.start(AbstractAwsEncodingStringAppender.java:123)
    at org.eluder.logback.ext.cloudwatch.appender.AbstractCloudWatchAppender.start(AbstractCloudWatchAppender.java:95)
    at ch.qos.logback.ext.spring.DelegatingLogbackAppender.getDelegate(Unknown Source)
    at ch.qos.logback.ext.spring.DelegatingLogbackAppender.append(Unknown Source)
    at ch.qos.logback.ext.spring.DelegatingLogbackAppender.append(Unknown Source)
    at ch.qos.logback.core.UnsynchronizedAppenderBase.doAppend(UnsynchronizedAppenderBase.java:84)
    at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:48)
    at ch.qos.logback.classic.Logger.appendLoopOnAppenders(Logger.java:270)
    at ch.qos.logback.classic.Logger.callAppenders(Logger.java:257)
    at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:421)
    at ch.qos.logback.classic.Logger.filterAndLog_0_Or3Plus(Logger.java:383)
    at ch.qos.logback.classic.Logger.info(Logger.java:579)
    (truncated)
java.lang.NoSuchMethodError:com.amazonaws.transform.JsonErrorUnmarshaller:method(Ljava/lang/Class;)V未找到
在com.amazonaws.services.logs.model.transform.invalidParameterExceptionOnNumarshaller。(invalidParameterExceptionOnNumarshaller.java:26)
位于com.amazonaws.services.logs.AWSLogsClient.init(AWSLogsClient.java:280)
位于com.amazonaws.services.logs.AWSLogsClient.(AWSLogsClient.java:275)
位于com.amazonaws.services.logs.AWSLogsClient.(AWSLogsClient.java:248)
位于org.eluder.logback.ext.cloudwatch.appender.AbstractCloudWatchAppender.doStart(AbstractCloudWatchAppender.java:100)
位于org.eluder.logback.ext.aws.core.AbstractAwsEncodingStringAppender.start(AbstractAwsEncodingStringAppender.java:123)
位于org.eluder.logback.ext.cloudwatch.appender.AbstractCloudWatchAppender.start(AbstractCloudWatchAppender.java:95)
位于ch.qos.logback.ext.spring.DelegatingLogbackAppender.getDelegate(未知源)
位于ch.qos.logback.ext.spring.DelegatingLogbackAppender.append(未知源)
位于ch.qos.logback.ext.spring.DelegatingLogbackAppender.append(未知源)
位于ch.qos.logback.core.UnsynchronizedAppenderBase.doAppend(UnsynchronizedAppenderBase.java:84)
位于ch.qos.logback.core.spi.appenderatachableimpl.appenderlooponappenders(appenderatachableimpl.java:48)
位于ch.qos.logback.classic.Logger.appendLoopOnAppenders(Logger.java:270)
位于ch.qos.logback.classic.Logger.callAppenders(Logger.java:257)
在ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:421)中
在ch.qos.logback.classic.Logger.filterAndLog_0_或3plus上(Logger.java:383)
位于ch.qos.logback.classic.Logger.info(Logger.java:579)
(截断)

我发现我们已经升级到了AWS 1.11.5,但我在该版本中找不到任何此类缺陷的证据。

事实证明,当前版本的logback ext cloudwatch appender对特定版本的AWS java sdk logs 1.10.2具有过渡依赖性,与其他aws java sdk库1.11.0及以上版本不兼容。我们确实使用了许多其他aws java sdk库。我们这样排除了依赖关系

<dependency>
    <groupId>org.eluder.logback</groupId>
    <artifactId>logback-ext-cloudwatch-appender</artifactId>
    <version>1.0-SNAPSHOT</version>
    <exclusions>
        <exclusion>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-core</artifactId>
        </exclusion>
        <exclusion>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-logs</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-core</artifactId>
    <version>1.11.5</version>
</dependency>
<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-logs</artifactId>
    <version>1.11.5</version>
</dependency>

仅仅排除依赖项是行不通的。我必须分叉并重建logback ext cloudwatch appender jar,该jar依赖于当前的1.11.5 aws java sdk库。尝试将新的AWS依赖项与针对旧库构建的logback ext cloudwatch appender jar一起使用,导致createLogGroup的方法签名(返回类型)不匹配,从而导致运行时错误。为了让它运行,我只需要在我的分叉版本中更改pom.xml文件,而不是源代码。

事实证明,当前版本的logback ext cloudwatch appender对特定版本的aws java sdk logs 1.10.2具有可传递的依赖性,与其他aws java sdk库1.11.0及以上版本不兼容。我们确实使用了许多其他aws java sdk库。我们这样排除了依赖关系

<dependency>
    <groupId>org.eluder.logback</groupId>
    <artifactId>logback-ext-cloudwatch-appender</artifactId>
    <version>1.0-SNAPSHOT</version>
    <exclusions>
        <exclusion>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-core</artifactId>
        </exclusion>
        <exclusion>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-logs</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-core</artifactId>
    <version>1.11.5</version>
</dependency>
<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-logs</artifactId>
    <version>1.11.5</version>
</dependency>

仅仅排除依赖项是行不通的。我必须分叉并重建logback ext cloudwatch appender jar,该jar依赖于当前的1.11.5 aws java sdk库。尝试将新的AWS依赖项与针对旧库构建的logback ext cloudwatch appender jar一起使用,导致createLogGroup的方法签名(返回类型)不匹配,从而导致运行时错误。为了让它运行,我只需要在我的分叉版本中更改pom.xml文件,而不是源代码。

我将这个答案解释为“去看看我的依赖项”。我将我的
aws java sdk
aws java sdk core
更新为最新版本,如MavenCentral上所示,它为我修复了错误!如果您没有像我们一样使用logback ext cloudwatch appender,它不是AWS的一部分,那么是的,我同意。这是关于如何修复的高级描述。我在cloudwatch appender中遇到了同样的问题。我想我在createLogGroup调用中使用了反射来解决这个问题:我将这个答案解释为“去看看我的依赖项”。我将我的
aws java sdk
aws java sdk core
更新为最新版本,如MavenCentral上所示,并为我修复了错误!如果您没有像我们一样使用logback ext cloudwatch appender,它不是AWS的一部分,那么是的,我同意。这是关于如何修复的高级描述。我在cloudwatch appender中遇到了同样的问题。我想我在createLogGroup调用中使用反射解决了这个问题: