【发布时间】:2017-09-08 14:32:43
【问题描述】:
我有一个问题,我希望能解决。首先,当我使用源语言和目标语言调用云翻译服务时,遇到以下错误:
java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V
at com.google.cloud.translate.TranslateImpl.optionMap(TranslateImpl.java:131)
at com.google.cloud.translate.TranslateImpl.access$000(TranslateImpl.java:40)
at com.google.cloud.translate.TranslateImpl$4.call(TranslateImpl.java:113)
at com.google.cloud.translate.TranslateImpl$4.call(TranslateImpl.java:110)
这就是我正在做的:
protected Translate getTranslationServiceClient() throws IOException {
if (translationServiceClient == null) {
synchronized (this) {
if (translationServiceClient == null) {
try (InputStream is = new FileInputStream(new File(getCredentialFilePath()))) {
final GoogleCredentials myCredentials = GoogleCredentials.fromStream(is);
translationServiceClient = TranslateOptions.newBuilder().setCredentials(myCredentials).build().getService();
} catch (IOException ioe) {
throw new NuxeoException(ioe);
}
}
}
}
return translationServiceClient;
}
public TranslationResponse translateText(String text, String sourceLanguage, String targetLanguage) throws IOException {
Translation response = translationService.translate(text, TranslateOption.sourceLanguage("en"), TranslateOption.sourceLanguage("es"));
//System.out.println(response.getTranslatedText());
GoogleTranslationResponse gtr = new GoogleTranslationResponse(response);
return gtr;
}
错误指向 Cloud 的 TranslateImpl 类 optionMap 方法,并在 checkArgument 上溢出 NoSuchMethodError。我是否错误地传递了 TranslateOption??:
private Map<TranslateRpc.Option, ?> optionMap(Option... options) {
Map<TranslateRpc.Option, Object> optionMap = Maps.newEnumMap(TranslateRpc.Option.class);
for (Option option : options) {
Object prev = optionMap.put(option.getRpcOption(), option.getValue());
checkArgument(prev == null, "Duplicate option %s", option);
}
return optionMap;
}
为了从 API 获得任何类型的响应,我尝试在不传递任何选项或仅传递 targetLanguage 的情况下调用服务。没有任何选项,我没有任何错误,我的短信按预期翻译成英文。如果我只添加 TranslateOption.targetLanguage("es"),我仍然会得到 NoSuchMethodError。
【问题讨论】:
-
请参考下面的解决方案。我也遇到过类似的问题stackoverflow.com/questions/45247193/…
标签: java google-app-engine google-translate