Grails 2.2.0 升级导致协议缓冲区不匹配
Posted
技术标签:
【中文标题】Grails 2.2.0 升级导致协议缓冲区不匹配【英文标题】:Grails 2.2.0 upgrade causing protocol buffers mismatch 【发布时间】:2013-02-04 14:19:15 【问题描述】:我们正在使用 groovy 2 和 jdk 1.7 将我们的 grails 2.0.3
应用程序升级到 grails 2.2.0
。但是,我们发现grails 2.2.0
带有protobuf-java 2.4.1
,这导致与我们的应用程序用来与后端通信的jar 不匹配。该系统使用protobuf-java 2.3.0
。因此,与该系统的任何通信都会失败。
我们已经尝试使用 BuildConfig.groovy 中的 excludes 标记排除 protobuf-java -
inherits("global") excludes 'protobuf-java'
我们认为这只会排除我们从 grails 获得的 2.4.1 版本。然而,这似乎排除了这个 jar 的所有版本,即使是我们从我们正在使用的这个 jar 中获得的作为传递依赖的版本。如果我们尝试使用 excludes 标记,然后将 protobuf-java 作为依赖项包含在我们的 pom 中,版本为 2.3.0,应用程序重启将失败并出现 grails 错误。
我的问题:
有没有办法只排除特定版本的 protobuf-java jar(即 2.4.1)使用 excludes jar
是排除grails的继承依赖之一(protobuf 在我们的例子中是 java 2.4.1)并建议使用降级版本
如果排除不是一种选择,有没有其他更好的方法来解决这个问题
【问题讨论】:
【参考方案1】:Grails 2.0.3 和一个库在 protobuf-java 3.4.0 中存在类似问题。我们通过运行战争而不是“grails run-app”来解决它:
$ grails -Dgrails.env=dev war && java -jar target/com.acme.app-2.3.0.war
类重新加载功能无论如何都不适用于此项目。
【讨论】:
以上是关于Grails 2.2.0 升级导致协议缓冲区不匹配的主要内容,如果未能解决你的问题,请参考以下文章
EasyCVR的网络环境和post端口号的不匹配导致视频无法播放的问题
Grails / Groovy / GGTS:运行应用程序上的模块版本冲突