java.lang.NoClassDefFoundError: Could not initialize class com.amazonaws.ClientConfiguration

java.lang.NoClassDefFoundError: Could not initialize class com.amazonaws.ClientConfiguration

在 OSGI Server

中使用这个包 - aws-java-sdk-osgi-1.11.26.jar

执行时抛出以下错误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)

有解决这个问题的方法吗?

嗯,请确保 aws-java-sdk-osgi-1.11.26.jar 存在于您的 class 路径中,因为 class 本身存在在罐子里。 我刚刚下载了 jar。

我猜您在捆绑包清单中缺少 Import-Package 语句。不确定你是如何构建你的包的,但我建议以某种形式使用 bnd。例如,我通常使用 maven-bundle-plugin,它在后台使用 bnd。在大多数情况下,Bnd 能够自动计算出导入。

感谢所有建议

ClientConfiguration 的 aws-java-sdk-osgi-1.11.26.jar 依赖于 Jackson-databind.jar Jackson-databind.jar 依赖于 Jackson-core.jar 所以无法初始化ClientConfiguration。

在 Jackson-databind-osgi.jar

的清单中添加了从 jackson-core-osgi.jar 全部导入的导入包

那么问题就解决了

注意:所有依赖的 jar 都转换为 OSGI jar 并部署

就我而言,重启flink集群解决了问题。