
被封
Dam...........刚准备上1.9k下载,几日前被封,还好老的安装可继续玩耍。
最终通过几轮邮件, 最终整改点信息,目前又解封了!(好事是交流直截了当说明原因, 照着改就OK了)。
升级
这次小小升级,简单升级了生成模版,给proto 模块build 加了点额外说明,这个也更新如FAQ, 说明下 JAVA 编译版本冲突安排:
分析
最近在升级java 编译版本到 21 时候遇到一个诡异的事情, 项目都可以编译,但是 proto 更新没有刷新, 开始怀疑缓存, 所以都删除了,再实验还是不行, 然后怀疑插件问题, 退版本, 还是不行,然后插件加debug 信息, 本地测验十几轮,还是不行, 最后定位问题在我们 wire 插件做 post compile 时候,没有找到目标class(proto 编译后class), 但是他明明是前置编译而且看到在哪里, 没有办法手写个 URL Classloader, 这会错误精确打出来了; Class 版本过高,JVM 版本过低,无法识别。
最后是进一步捋:
-
本地环境17
-
项目环境是 21
所以项目预编译了proto 到 21 class, 然后本地环境也是编译环境启动gradle, 当然扫不到 21 class - 反射失败默认没有抛出。

FAQ
最后顺道也把这个小故事放到 FAQ 上去了。
JVM version compatibility is critical for successful proto module compilation.
Two JVM versions are involved:
-
The toolchain version defined in the project’s gradle/java.gradle file.
-
The JVM version of the build environment (used by Gradle at runtime).
A version mismatch between these can cause the protobuf wire compiler to fail silently.
To prevent issues:
-
Ensure the proto module’s target compilation version is
<=build environment JVM version.
Java version:
|
Project |
Compile(gradle) |
Proto Module |
|---|---|---|
|
21 |
21 |
Default or |
|
21 |
17 | <=17 |
|
17 |
21 |
Default or |


497

被折叠的 条评论
为什么被折叠?



