我正在使用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。 感谢。
答案 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");
}