编程笔记

lifelong learning & practice makes perfect

idea|问题定位-protobuf生成异常

问题

在SpringCloud应用里使用protobuf,通过Maven编译生成对应的类,结果有一个类Idea飘红,无法跳转

1
2
3
message Position{
double x = 1;
}
  • Position正常情况下,应该生成 Position 和 PositionOrBuilder 2个类,出现的问题是Position类飘红,无法跳转

  • 安装了Idea官方插件”Protocol Buffers”,正常能从Protobuf文件中的定义跳转到生成的类上,Position只能跳转到
    PositionOrBuilder上

  • 在Protobuf文件中还定义了多个其他类,都能正常生成

结果

发现是生成的类文件过大,修改Idea配置,解决”The file size exceeds configured limit”
问题后能正常跳转了

file size exceeds configured limit

Idea菜单栏点击”Help”->”Edit custom properties” 添加下面的配置,修改文件大小限制

1
2
# custom IntelliJ IDEA properties
idea.max.intellisense.filesize=50000

解决过程

  1. 一开始从类飘红的入手,怀疑是没有生成对应的类,在”target/generated-sources/protobuf/java/xxxx”目录下查找
    对应的类,看了一圈没有(实际生成了,Idea扫描后做代码提示,由于这个文件过大把文件放到了最后,并不是正常按文件排序,
    导致误判,认为没有生成)
  2. 于是尝试下载protoc插件手动生成,没成功
  3. 换个环境,在wsl上配置idea环境,直接调用windwos上的maven编译,发现了生成的对应类
  4. 开始配置wsl+idea: maven,jdk,jre,idea配置
  5. 配置一堆,通过idea编译发现还是不能跳转(能生成正常应该能跳转…)
  6. 又找了一圈,看到了Position类,提示”The file size (4MB) exceeds the configured limit (2.56 MB).Code insight features are not available.”
  7. 修复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

欢迎关注我的其它发布渠道