创建 JClouds SwiftApi 时出错:无法实例化提供程序 org.jclouds.openstack.keystone.v2_0.KeystoneApiMetadata
Posted
技术标签:
【中文标题】创建 JClouds SwiftApi 时出错:无法实例化提供程序 org.jclouds.openstack.keystone.v2_0.KeystoneApiMetadata【英文标题】:Error creating JClouds SwiftApi: Provider org.jclouds.openstack.keystone.v2_0.KeystoneApiMetadata could not be instantiated 【发布时间】:2014-09-27 02:16:51 【问题描述】:我有一些用于连接 JClouds swift 存储容器的代码,该容器在其自己的测试区域中运行良好,但是一旦我集成到我的项目中,就会出现错误:
线程“主”java.util.ServiceConfigurationError 中的异常: org.jclouds.apis.ApiMetadata:提供者 org.jclouds.openstack.keystone.v2_0.KeystoneApiMetadata 不能 实例化:java.lang.IllegalStateException: java.lang.reflect.InvocationTargetException
这是在 ContextBuilder 行上失败的代码:
private SwiftApi swiftApi;
public JCloudsConnector(String username, String password, String endpoint)
String provider = "openstack-swift";
Properties overrides = new Properties();
overrides.setProperty("jclouds.mpu.parallel.degree", "" + Runtime.getRuntime().availableProcessors());
swiftApi = ContextBuilder.newBuilder(provider)
.endpoint(endpoint)
.credentials(username, password)
.overrides(overrides)
.buildApi(SwiftApi.class);
我使用的是相同的依赖项(JClouds 版本 1.7.3),所以我无法理解问题可能是什么,因为两者都在相同的环境中运行。
【问题讨论】:
类路径中有哪个版本的 Guava?另外,您运行的是哪个版本的 JVM? Guava 在 16.0.1 和 JVM 1.7.051 Jclouds 1.7.3 依赖于 Guava 15.0,并且不适用于该 JVM 版本中的更高版本。你能坚持使用 Guava 15.0 吗? 非常感谢!现在问题已经解决了。 不要在你的问题标题中加上SOLVED,或者在问题中回答你的问题。而是发布一个单独的答案,并通过单击答案旁边的复选标记将其标记为已完成。 【参考方案1】:感谢 Ignasi Barrera,我能够通过在我的 maven POM 文件中添加 Guava 15.0 的条目来对此进行排序:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>15.0</version>
</dependency>
【讨论】:
以上是关于创建 JClouds SwiftApi 时出错:无法实例化提供程序 org.jclouds.openstack.keystone.v2_0.KeystoneApiMetadata的主要内容,如果未能解决你的问题,请参考以下文章
使用 Jclouds 上传时,Rackspace 云文件将“应用程序/未知”作为 mime 类型返回