Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 在OSGI捆绑包中使用AWS加密库时出错_Maven_Encryption_Amazon Dynamodb_Karaf_Karaf Maven Plugin - Fatal编程技术网

Maven 在OSGI捆绑包中使用AWS加密库时出错

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

我试图在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中

 <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库及其依赖项)