【发布时间】:2017-04-20 06:39:42
【问题描述】:
我正在使用用于 Google 语音和 Google 自然语言处理的 Google 云 API。我使用的版本如下:
google-cloud-speech:0.13.0-alpha
google-cloud-language:0.9.4-alpha
它们都使用 google-gax api 作为内部依赖项。语音 api 使用 gax 版本 0.10.0,语言 api 使用 0.1.4。 在 pom 中,我具有提供的依赖范围。所以出于这个原因,我在服务器的 lib 文件夹中提供了 jars。
但问题在于 gax api。问题是:
当我提供 0.10.0 版本的 gax 时,语音 api 可以工作,但语言 api 不能工作。
如果提供 gax 0.1.4 版本,则语言 api 有效,但语音 api 无效。
如果两个版本都提供,那么只有语音 api 有效。
有解决问题的建议吗?我已经尝试了所有方法,即清理项目、更新 maven、重新部署项目、删除所有 maven 依赖项并重建。但没有解决问题。
【问题讨论】:
-
没有办法 - 找到兼容版本的库。您也许可以编写一个“垫片”以使语言与 gax 0.10.0 一起使用。 (我撒谎,自定义类加载器或 OSGI 可以工作 - 但这超出了我认为的这个问题的范围)。
-
这是您使用 alpha 版本所支付的价格。在我看来,这两个库非常适合在 same 版本中使用(例如
0.8.0. -
除了使用自定义类加载器或 osgi 并且不更改您正在使用的版本:提取 jar,反编译,将类型移动到相应的包(如 gax.v0_10_0 和 gax.v_0_1_4),重新导入类型,重新打包。我不会推荐它,但如果你真的必须这样做。我们做过一次,它奏效了,很痛苦,但它奏效了,...(还有一件事:在 Maven 中,您可以排除传递依赖,这可能会有所帮助)
-
@slowy..我已经尝试过类似的痛苦工作,但没有成功。
标签: java maven dependencies google-cloud-speech