IntelliJ IDEA 中找不到 protocol buffer 生成的 Java 类的解决方法

场景:

IntelliJ Idea 中找不到 protocol buffer 生成的 class 类,而在命令行使用 mvn build, mvn package 项目是可以正常编译的。

问题描述:

比如从 IDEA 中打开 Apache Ratis 的源码,或者 Ozone 的源码,会报错提示部分类找不到,例如:

java: Cannot resolve symbol org.apache.ratis.proto.RaftProtos.LogEntryProto

java: package org.apache.hadoop.hdds.protocol.proto.HddsProtos does not exist

java: Cannot resolve symbol ContainerProtos

问题原因:

这是因为生成的源文件有数万行,源文件过大导致 idea 拒绝编译过大的源文件。

解决方案:

如果 protoc 生成的 class 文件找不到,说明 protoc 文件没有没有正确编译。 可以调整 IDEA 的默认参数, 然后重启 IntelliJ IDEA 使得 IDE 能够正确找到 protoc 生成的 Java 类。

  1. 打开 Help -> Edit 菜单
  2. 增加一行: idea.max.intellisense.filesize=10000 
  3. 重启 IDE

idea.max.intellisense.filesize 的值默认为 2500, 单位是 kb,即默认最大的源码文件大约为 2.5M,前面的参数把这个值调整到接近 10M。

问题分析:

比如 apache ratis 项目中从 proto 文件生成的这个源码大小是 2504kb, 刚好超过 2500 kb。
 

$du -sk ratis-proto/target/generated-sources/org/apache/ratis/proto/RaftProtos.java

2504    ratis-proto/target/generated-sources/org/apache/ratis/proto/RaftProtos.java

你可能感兴趣的:(Java,软件开发,备忘录,intellij-idea,java,ide)