Java rackspace cloudfiles在从jclouds 1.5迁移到1.7后引发ContainerNotFoundException
我正在尝试将我们使用的jclouds库从1.5版更新到1.7版 我们通过以下方式访问api: 在运行时,上载文件时出现以下错误:Java rackspace cloudfiles在从jclouds 1.5迁移到1.7后引发ContainerNotFoundException,java,rackspace,cloudfiles,jclouds,Java,Rackspace,Cloudfiles,Jclouds,我正在尝试将我们使用的jclouds库从1.5版更新到1.7版 我们通过以下方式访问api: 在运行时,上载文件时出现以下错误: org.jclouds.blobstore.ContainerNotFoundException jcloudsgithub项目中的示例似乎使用了不推荐的方法(上面提到的链接) 有什么办法解决这个问题吗?有其他选择吗?您要上载到的容器是否存在?putObject方法不会自动创建您命名的容器(如果它不存在);首先,您需要显式调用createContainer来创建它
org.jclouds.blobstore.ContainerNotFoundException
jcloudsgithub项目中的示例似乎使用了不推荐的方法(上面提到的链接)
有什么办法解决这个问题吗?有其他选择吗?您要上载到的容器是否存在?
putObject
方法不会自动创建您命名的容器(如果它不存在);首先,您需要显式调用createContainer
来创建它
下面是一个创建容器并将文件上载到其中的示例:
CloudFilesClient client = ContextBuilder.newBuilder("cloudfiles-us")
.credentials(USERNAME, APIKEY)
.buildApi(CloudFilesClient.class);
client.createContainer("sample");
SwiftObject object = client.newSwiftObject();
object.getInfo().setName("somefile.txt");
object.setPayload("file or bytearray or something else here");
client.putObject("sample", object);
// ...
client.close();
您是对的,
jclouds examples
中的示例仍然引用了RestClient
,但是您应该能够通过替换调用swift.getApi()
的rackspaceApi
对象来转换为新样式,非常感谢!容器存在-我忘了提到这一点。当我创建一个新容器时,它工作得非常好。如果尝试访问现有容器,我仍然会收到ContainerNotFoundException。
org.jclouds.blobstore.ContainerNotFoundException
CloudFilesClient client = ContextBuilder.newBuilder("cloudfiles-us")
.credentials(USERNAME, APIKEY)
.buildApi(CloudFilesClient.class);
client.createContainer("sample");
SwiftObject object = client.newSwiftObject();
object.getInfo().setName("somefile.txt");
object.setPayload("file or bytearray or something else here");
client.putObject("sample", object);
// ...
client.close();