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

30 篇文章 1 订阅
13 篇文章 0 订阅

场景:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值