如何解决blob加密中的AbstractMethod错误?

时间:2018-01-25 13:11:22

标签: java azure azure-storage abstractmethoderror

我想通过对其应用加密将blob上传到azure blob存储中。所以我试图使用以下代码来做到这一点:

 File f=new File("/home/prospera-user15/Desktop/test/download.jpeg");

        CloudStorageAccount account = CloudStorageAccount.parse(storageConnectionString);
        CloudBlobClient serviceClient = account.createCloudBlobClient();
        // Container name must be lower case.
        CloudBlobContainer container = serviceClient.getContainerReference("upload1");
        container.createIfNotExists();
        CloudBlockBlob blob = container.getBlockBlobReference("megha");
        final KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
        keyGen.initialize(2048);
        final KeyPair wrapKey = keyGen.generateKeyPair();

        RsaKey key = new RsaKey("RSA",wrapKey);
        System.out.println("Uploading the encrypted blob.");
        BlobEncryptionPolicy policy = new BlobEncryptionPolicy(key, null);
        BlobRequestOptions options = new BlobRequestOptions();
        options.setEncryptionPolicy(policy);
        AccessCondition accessCondition = null;
        OperationContext opContext = null;
        try{
            blob.upload(new FileInputStream(f), f.length(), accessCondition, options, opContext);
        }catch (IOException e) {
            System.out.println(e.getMessage());
        }catch (StorageException e) {
            System.out.println(e.getErrorCode());
        }

for above code i got following exception:

2 个答案:

答案 0 :(得分:0)

AbstractMethodError暗示自上次编译以来某些类的定义已经不兼容地改变

在您的情况下,您可能正在使用缺少新接口方法的旧版本的接口实现,并且根据可能是您的RsaKey类/接口的堆栈跟踪。

答案 1 :(得分:0)

当应用程序尝试调用抽象方法时,抛出此异常。通常,编译器会捕获此错误;如果自上次编译当前正在执行的方法以来某些类的定义发生了不兼容的更改,则此错误只能在运行时发生。

来源:https://docs.oracle.com/javase/6/docs/api/java/lang/AbstractMethodError.html

您是否还尝试检查您是否根据文档here授权您的应用程序使用密钥或密钥?