【发布时间】: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,或者在问题中回答你的问题。而是发布一个单独的答案,并通过单击答案旁边的复选标记将其标记为已完成。