学习亚马逊Kinesis Streams开发 - java.lang.NoClassDefFoundError:com/amazonaws/util/json/JSONObject

问题描述:

我想在这里找到的Kinesis Streams上运行以下AWS教程,http://docs.aws.amazon.com/streams/latest/dev/learning-kinesis-module-one-consumer.html,该项目的Producer部分(StockTradesWriter .java)工作得很好,但当我尝试运行项目的Consumer部分(StockTradesProcessor.java)时,出现以下错误。学习亚马逊Kinesis Streams开发 - java.lang.NoClassDefFoundError:com/amazonaws/util/json/JSONObject

Jun 13, 2016 6:03:36 PM com.amazonaws.services.kinesis.samples.stocktrades.processor.StockTradesProcessor main 
SEVERE: Caught throwable while processing data. 
java.lang.NoClassDefFoundError: com/amazonaws/util/json/JSONObject 
    at com.amazonaws.services.kinesis.leases.impl.Lease.toString(Lease.java:229) 
    at java.lang.String.valueOf(String.java:2994) 
    at java.lang.StringBuilder.append(StringBuilder.java:131) 
    at com.amazonaws.services.kinesis.clientlibrary.lib.worker.ShardSyncer.determineNewLeasesToCreate(ShardSyncer.java:345) 
    at com.amazonaws.services.kinesis.clientlibrary.lib.worker.ShardSyncer.syncShardLeases(ShardSyncer.java:121) 
    at com.amazonaws.services.kinesis.clientlibrary.lib.worker.ShardSyncer.checkAndCreateLeasesForNewShards(ShardSyncer.java:88) 
    at com.amazonaws.services.kinesis.clientlibrary.lib.worker.ShardSyncTask.call(ShardSyncTask.java:68) 
    at com.amazonaws.services.kinesis.clientlibrary.lib.worker.MetricsCollectingTaskDecorator.call(MetricsCollectingTaskDecorator.java:49) 
    at com.amazonaws.services.kinesis.clientlibrary.lib.worker.Worker.initialize(Worker.java:395) 
    at com.amazonaws.services.kinesis.clientlibrary.lib.worker.Worker.run(Worker.java:330) 
    at com.amazonaws.services.kinesis.samples.stocktrades.processor.StockTradesProcessor.main(StockTradesProcessor.java:117) 
Caused by: java.lang.ClassNotFoundException: com.amazonaws.util.json.JSONObject 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 11 more 

所以这个类,http://javadox.com/com.amazonaws/aws-java-sdk-core/1.9.26/com/amazonaws/util/json/JSONObject.html,由于某种原因无法找到。

我在Eclipse中使用Java 8运行此操作,并且包含Kinesis客户端库(KCL)版本1.6.3和适用于Java版本1.11.7的AWS开发工具包。这里是我的Eclipse项目的屏幕截图:

enter image description here

注:下载并运行这个程序,你可以找到你需要这个前提页面上的所有内容:http://docs.aws.amazon.com/streams/latest/dev/learning-kinesis-module-one-begin.html

显然,最新的AWS SDK(1.11.x)不适合工作本教程。我把版本下降到1.10.76,一切开始运作......感谢亚马逊。

enter image description here

+0

这是不是一个真正的答案看,如果你需要使用1.11.x的具体原因,它并没有解决问题 –

+0

没有?它确实解决了我的问题... –

+0

有人请为1.11.x提供解决方案 – masSdev

升级到KCL V1.7.2似乎已经解决了对我来说。我正在使用AWS SDK 1.11.58。

不知道当问题被引入或固定