簡體   English   中英

亞馬遜AWS KMS + Gradle:NoClassDefFoundError

[英]Amazon AWS KMS + Gradle: NoClassDefFoundError

我的build.gradle

apply plugin: 'idea'
apply plugin: 'java'
apply plugin: 'application'

repositories {
    mavenCentral()
}

dependencies {
    compile 'com.amazonaws:aws-java-sdk:1.11.171'
}

我的Java文件:

import com.amazonaws.services.kms.AWSKMS;
import com.amazonaws.services.kms.AWSKMSClientBuilder;
import com.amazonaws.services.kms.model.GenerateDataKeyRequest;
import com.amazonaws.services.kms.model.GenerateDataKeyResult;

import java.nio.charset.StandardCharsets;

public class KmsExample {

    private static final String KEYID = "arn:aws:kms:us-east-1:[userid]:key/[cmk id]";

    public static void main(String[] args) {
        AWSKMS kms = AWSKMSClientBuilder.defaultClient();

        GenerateDataKeyRequest dataKeyRequest = new GenerateDataKeyRequest();
        dataKeyRequest.setKeyId(KEYID);
        dataKeyRequest.setKeySpec("AES_128");

        GenerateDataKeyResult dataKeyResult = kms.generateDataKey(dataKeyRequest);

        String plaintextKey = StandardCharsets.UTF_8.decode(dataKeyResult.getPlaintext()).toString();

        String encryptedKey = StandardCharsets.UTF_8.decode(dataKeyResult.getCiphertextBlob()).toString();

        System.out.println(plaintextKey + " | " + encryptedKey);
    }

}

很簡單。 但是,當我運行文件時,它給了我NoClassDefFoundError錯誤:

Exception in thread "main" java.lang.NoClassDefFoundError: 
com/amazonaws/services/kms/AWSKMSClientBuilder
at KmsExample.main(KmsExample.java:13)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

Caused by: java.lang.ClassNotFoundException: 
com.amazonaws.services.kms.AWSKMSClientBuilder
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 6 more

在IntelliJ中,我可以很好地導入文件,並且所有JARS都在其中: 在此處輸入圖片說明

Ctrl / Cmd + B跳轉到文件聲明可以正常工作,證明文件在那里。

那么,為什么我仍然收到NoClassDefFoundError?

您缺少包含AWSKMSClientBuilder類的依賴項。 只需將以下內容添加到您的build.gradle

compile group: 'com.amazonaws', name: 'aws-java-sdk-kms', version: '1.11.171'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM