无法加载AWS Ivona Properties File Java

时间:2016-02-08 13:03:45

标签: java amazon-web-services aws-sdk

我正在使用IVONA SpeachCloud SDK(创建语音示例):source code

使用此代码设置类路径

private static IvonaSpeechCloudClient speechCloud;

private static void init() {
    speechCloud = new IvonaSpeechCloudClient(
            new ClasspathPropertiesFileCredentialsProvider("IvonaCredentials.properties"));
    speechCloud.setEndpoint("https://tts.eu-west-1.ivonacloud.com");
}

以下是ivona.properties文件的格式。文件位于基目录中。我在SpeechCloud帐户中获得的所需凭据

accessKey = mykey 
secretKey = mysecretKey

以下是我得到的例外

Exception in thread "main" com.amazonaws.AmazonClientException: Unable to load AWS credentials from the /resources/ivona.properties file on the classpath
at com.amazonaws.auth.ClasspathPropertiesFileCredentialsProvider.getCredentials(ClasspathPropertiesFileCredentialsProvider.java:81)
at com.ivona.services.tts.IvonaSpeechCloudClient.prepareRequest(IvonaSpeechCloudClient.java:279)
at com.ivona.services.tts.IvonaSpeechCloudClient.prepareRequest(IvonaSpeechCloudClient.java:272)
at com.ivona.services.tts.IvonaSpeechCloudClient.invoke(IvonaSpeechCloudClient.java:259)
at com.ivona.services.tts.IvonaSpeechCloudClient.createSpeech(IvonaSpeechCloudClient.java:148)
at SampleIvonaSpeechCloudCreateSpeech.main(SampleIvonaSpeechCloudCreateSpeech.java:45

如何解决此异常,或者如何创建一个类来解决此问题并手动输入我的accessKey和secretKey作为String。 感谢。

1 个答案:

答案 0 :(得分:0)

好吧,我在源文件中搞乱几个小时之后想出来了。您可以创建自己的Provider Class,您可以在其中将凭据作为String Parameters传递。

这是我的自定义凭据类“IvonaCredentials”

import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.AWSCredentialsProvider;

public class IvonaCredentials implements AWSCredentialsProvider{

public IvonaCredentials(String mSecretKey, String mAccessKey) {
    super();
    this.mSecretKey = mSecretKey;
    this.mAccessKey = mAccessKey;
}

private String mSecretKey;
private String mAccessKey;

@Override
public AWSCredentials getCredentials() {
    AWSCredentials awsCredentials = new AWSCredentials() {

        @Override
        public String getAWSSecretKey() {
            // TODO Auto-generated method stub
            return mSecretKey;
        }

        @Override
        public String getAWSAccessKeyId() {
            // TODO Auto-generated method stub
            return mAccessKey;
        };
    };
    return awsCredentials;
}

@Override
public void refresh() {
    // TODO Auto-generated method stub

}



}

这就是我打电话给我的课程

private static void init() {
    speechCloud = new IvonaSpeechCloudClient(new IvonaCredentials("secretKey", "accessKey"));
    speechCloud.setEndpoint("https://tts.eu-west-1.ivonacloud.com");
}