3

Я включил код из DynamoDB потоков адаптера демку от AWS-dynamodb-примеров, в мой Maven проект, и я получаю сообщение об ошибке во время выполнения:Почему я получаю NoClassDefFoundError на JSONObject в amazon-kinesis-client?

Exception in thread "Thread-2" java.lang.NoClassDefFoundError: com/amazonaws/util/json/JSONObject 
at com.amazonaws.services.kinesis.leases.impl.Lease.toString(Lease.java:229) 

Любая идея, почему это происходит и что Я могу это исправить?

Мой файл ПОМ это:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.aligntech</groupId> 
    <artifactId>dynamodbstream</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>dynamodbstream</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <maven.compiler.source>1.8</maven.compiler.source> 
     <maven.compiler.target>1.8</maven.compiler.target> 
    </properties> 

    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 

     <dependency> 
      <groupId>com.amazonaws</groupId> 
      <artifactId>aws-java-sdk</artifactId> 
      <version>LATEST</version> 
     </dependency> 

    <dependency> 
     <groupId>com.amazonaws</groupId> 
     <artifactId>dynamodb-streams-kinesis-adapter</artifactId> 
     <version>LATEST</version> 
    </dependency> 


    </dependencies> 
</project> 
+0

Попробуйте добавить зависимость от 'aws-java-sdk-core' –

+0

Пробовал. Не повезло. Я вижу, что aws-java-sdk-core в своей последней версии не имеет класса com.amazonaws.util.json.JSONObject. Интересно, куда он пошел? –

+0

Спасибо за редактирование, Сигуза –

ответ

7

Проблема будет решена, если я изменить версию aws-java-sdk к 1.10.77. Кажется, что библиотека кинези в версии 1.11.0 пытается использовать JSONObject, который был удален из com.amazonaws.util.json.

0

Пробуйте эту конфигурацию. Работает для меня, и я думаю, что это правильный способ сделать это. При такой конфигурации вы согласуетесь с последними версиями AWS.

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath "io.spring.gradle:dependency-management-plugin:1.0.0.RC2" 
    } 
} 

apply plugin: 'java' 
apply plugin: 'eclipse' 
apply plugin: "io.spring.dependency-management" 

group = 'com.example' 
version = '0.0.1-SNAPSHOT' 
sourceCompatibility = 1.7 

repositories { 
    mavenCentral() 
    maven { 
     url "http://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk" 
    } 

} 

dependencyManagement { 
    imports { 
     mavenBom 'com.amazonaws:aws-java-sdk-bom:1.11.197' 
    } 
} 

dependencies { 

    compile group: 'com.amazonaws', name: 'aws-java-sdk', version: '1.11.197' 
    compile group: 'com.amazonaws', name: 'amazon-kinesis-client', version: '1.8.1' 

    testCompile group: 'junit', name: 'junit', version: '4.12' 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^