2016-09-22 201 views
1

使用此包 - AWS-Java的SDK-OSGi的1.11.26.jar在OSGI服务器java.lang.NoClassDefFoundError:无法初始化类com.amazonaws.ClientConfiguration

下面的错误,这是在执行时被抛出AmazonS3 s3 = new AmazonS3Client(credentials);

java.lang.NoClassDefFoundError: Could not initialize class com.amazonaws.ClientConfiguration 
     at com.amazonaws.ClientConfigurationFactory.getDefaultConfig(ClientConfigurationFactory.java:46) 
     at com.amazonaws.ClientConfigurationFactory.getConfig(ClientConfigurationFactory.java:36) 
     at com.amazonaws.services.s3.AmazonS3Client.<init>(AmazonS3Client.java:440) 

任何解决方案来解决这个问题?

回答

1

感谢所有的建议

AWS-Java的SDK-OSGi的1.11.26.jar的ClientConfiguration取决于杰克逊databind.jar 杰克逊databind.jar的是依赖于杰克逊核心。 jar 所以无法初始化ClientConfiguration。

增加进口,包装在杰克逊 - 数据绑定 - osgi.jar的清单从杰克逊核心osgi.jar进口所有

然后问题解决了

注意:所有依赖jar转换为OSGI罐子和部署

+0

你是怎么做到的?我想用gradle做类似的事情。 – OPTIMUS

0

那么,请确保aws-java-sdk-osgi-1.11.26.jar存在于你的类路径中,因为类本身存在于jar中。 我刚刚下载了这个jar。

aws-java-sdk-osgi-1.11.26.jar

0

我猜你缺少你捆绑的进口包装声明清单。不知道你是如何构建你的包,但我会建议使用某种形式的bnd。例如,我通常使用引擎盖下使用bnd的maven-bundle-plugin。 Bnd能够在大多数情况下自动计算出进口量。

+0

\t \t \t \t \t \t \t \t \t org.apache.felix \t \t \t \t 行家束-插件 \t \t \t \t \t \t \t \t <结构> \t \t \t \t \t \t \t \t \t \t <说明> \t \t \t \t \t \t ... \t \t \t \t \t \t <进口包装> \t \t \t \t \t \t \t com.amazonaws。*; \t \t \t \t \t \t <服务的组件> * \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t

+0

灿您尝试删除Import-Package语句。在大多数赛事中,默认应该做正确的事情。你的设置将覆盖所有必要软件包的默认选择..也许缺少一个。另一方面,至少com.amazonaws的导入应该与你的配置一起出现。 –

相关问题