问题
在SpringCloud应用里使用protobuf,通过Maven编译生成对应的类,结果有一个类Idea飘红,无法跳转
1 | message Position{ |
Position正常情况下,应该生成 Position 和 PositionOrBuilder 2个类,出现的问题是Position类飘红,无法跳转
安装了Idea官方插件”Protocol Buffers”,正常能从Protobuf文件中的定义跳转到生成的类上,Position只能跳转到
PositionOrBuilder上在Protobuf文件中还定义了多个其他类,都能正常生成
结果
发现是生成的类文件过大,修改Idea配置,解决”The file size exceeds configured limit”
问题后能正常跳转了
Idea菜单栏点击”Help”->”Edit custom properties” 添加下面的配置,修改文件大小限制
1 | custom IntelliJ IDEA properties |
解决过程
- 一开始从类飘红的入手,怀疑是没有生成对应的类,在”target/generated-sources/protobuf/java/xxxx”目录下查找
对应的类,看了一圈没有(实际生成了,Idea扫描后做代码提示,由于这个文件过大把文件放到了最后,并不是正常按文件排序,
导致误判,认为没有生成) - 于是尝试下载protoc插件手动生成,没成功
- 换个环境,在wsl上配置idea环境,直接调用windwos上的maven编译,发现了生成的对应类
- 开始配置wsl+idea: maven,jdk,jre,idea配置
- 配置一堆,通过idea编译发现还是不能跳转(能生成正常应该能跳转…)
- 又找了一圈,看到了Position类,提示”The file size (4MB) exceeds the configured limit (2.56 MB).Code insight features are not available.”
- 修复idea配置,添加”idea.max.intellisense.filesize=50000”,终于正常了
wsl2+idea
缺陷
- 占用cpu过高,是在windwos上的几倍,环境里的git版本太低(如2.17.1)不支持,
- debug/run需要手动配置”Run Configuration”,和Win比太折腾,在Windows上点下main方法就好了
参考
- maven生成protobuf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21<!-- 参考 : https://www.xolstice.org/protobuf-maven-plugin/usage.html -->
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>3.21.7</version>
</dependency>
<plugin>
<groupId>org.xolstice.maven.plugins</groupId>
<artifactId>protobuf-maven-plugin</artifactId>
<version>0.6.1</version>
<configuration>
<pluginId>protoc-java</pluginId>
<protocArtifact>
com.google.protobuf:protoc:${protoc.version}:exe:${os.detected.classifier}
</protocArtifact>
<pluginArtifact>
io.grpc:protoc-gen-grpc-java:${grpc.version}:exe:${os.detected.classifier}
</pluginArtifact>
</configuration>
</plugin> - idea+wsl环境配置
- idea+wsl环境配置.2
- The file size exceeds configured limit