Maven 在OSGI捆绑包中使用AWS加密库时出错
我试图在karaf OSGI服务中使用AWS加密“DirectKmsMaterialProvider”,但它引发classnotfound异常: 原因:java.lang.ClassNotFoundException:com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMappingException未被wrap\u文件\u用户\u rioortizr\um2\u存储库\u com\u amazonaws\u aws-dynamodb-encryption-java\u 1.11.0\u aws-dynamodb-encryption-java-1.11.0.jar发现[2404] 位于org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1574) org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:79) 位于org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2018) 在java.lang.ClassLoader.loadClass(ClassLoader.java:357)[:1.8.0_51] ... 还有45个 我已经在pom.xml和features.xml中添加了依赖项 在我的pom中Maven 在OSGI捆绑包中使用AWS加密库时出错,maven,encryption,amazon-dynamodb,karaf,karaf-maven-plugin,Maven,Encryption,Amazon Dynamodb,Karaf,Karaf Maven Plugin,我试图在karaf OSGI服务中使用AWS加密“DirectKmsMaterialProvider”,但它引发classnotfound异常: 原因:java.lang.ClassNotFoundException:com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMappingException未被wrap\u文件\u用户\u rioortizr\um2\u存储库\u com\u amazonaws\u aws-dynamodb-e
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-dynamodb</artifactId>
<version>1.11.0</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-dynamodb-encryption-java</artifactId>
<version>1.11.0</version>
</dependency>
亚马逊网站
aws java sdk dynamodb
1.11.0
亚马逊网站
aws dynamodb加密java
1.11.0
在features.xml中
<bundle>wrap:mvn:com.amazonaws/aws-dynamodb-encryption-java/1.11.0</bundle>
<bundle>wrap:mvn:com.amazonaws/aws-java-sdk-dynamodb/1.11.0</bundle>
wrap:mvn:com.amazonaws/aws dynamodb encryption java/1.11.0
wrap:mvn:com.amazonaws/aws java sdk dynamodb/1.11.0
我有什么遗漏吗
谢谢
问候,,
Rio似乎
aws dynamodb encryption java
捆绑包在其清单文件导入中没有com.amazonaws.services.dynamodbv2.datamodeling
包,这在wrap中经常发生
要解决这个问题,您可以像servicemix一样使用OSGi来定义依赖项,这样您就可以手动控制和修复导入和导出。例如:作为OSGi项目的依赖项而不是OSGi捆绑包的JAR在背后可能是一个真正的麻烦。在花了很多时间试图解决通过Karaf的wrap deployer部署JAR时出现的类路径问题之后,我默认将非OSGi依赖项嵌入到自己的包中。查看有关不同选项的详细信息。举一个简单的例子,看看这个问题的公认答案 虽然嵌入依赖项解决了很多问题,但它也带来了一些麻烦。一个是您正在膨胀您自己的捆绑包,并且您无法在多个捆绑包之间共享这些依赖关系。另一个原因是,常规JAR通常附带大量的包导入,这些包导入在运行时不需要,或者仅在某些使用场景中需要,并且它们的可传递Maven依赖项也不提供这些包导入。为了控制包的大小,您需要删除所有这些依赖项,并禁止将这些包添加到您自己的包清单中。在引用的示例中,我可以排除9个包。在我的“嵌入最重”包中,这个列表包含大约70个包(用于嵌入Titan graph库及其依赖项)