Java rackspace cloudfiles在从jclouds 1.5迁移到1.7后引发ContainerNotFoundException

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来创建它

我正在尝试将我们使用的jclouds库从1.5版更新到1.7版

我们通过以下方式访问api:

在运行时,上载文件时出现以下错误:

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();