idea的java代码引用proto文件报错

尝试了四种办法,感觉第一个和第二个比较有效。

前提是要先安装了 proto 的idea插件。

1.修改idea配置文件编译大文件的限制

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

解决方案:

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

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

然后重启IDE

问题分析:

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

具体步骤:

  • 找到idea安装目录bin/idea.properties文件
idea.max.intellisense.filesize=10000 #默认2500

或者idea界面的菜单

Help-> Edit Custom Properties

增加下面的配置

idea.max.intellisense.filesize = 10000

重启IDE

2.编译代码问题

如果用maven依赖的方式编译译文件,才会引用到

如果是依靠maven来编译识别proto文件的,那么需要先把proto文件编译生成一些编译后的java文件,java文件中才会引用到这部分proto文件。

使用maven的 compile 命令进行编译

pom文件的配置

<properties><grpc.version>1.6.1</grpc.version><protobuf.version>3.3.0</protobuf.version>
</properties><dependencies><dependency><groupId>io.grpc</groupId><artifactId>grpc-netty</artifactId><version>${grpc.version}</version><scope>provided</scope></dependency><dependency><groupId>io.grpc</groupId><artifactId>grpc-protobuf</artifactId><version>${grpc.version}</version><scope>provided</scope></dependency><dependency><groupId>io.grpc</groupId><artifactId>grpc-stub</artifactId><version>${grpc.version}</version><scope>provided</scope></dependency><dependency><groupId>com.google.protobuf</groupId><artifactId>protobuf-java</artifactId><version>${protobuf.version}</version></dependency>
</dependencies><build><extensions><extension><groupId>kr.motd.maven</groupId><artifactId>os-maven-plugin</artifactId><version>1.5.0.Final</version></extension></extensions><plugins><plugin><groupId>org.xolstice.maven.plugins</groupId><artifactId>protobuf-maven-plugin</artifactId><version>0.5.0</version><configuration><protocArtifact>com.google.protobuf:protoc:${protobuf.version}:exe:${os.detected.classifier}</protocArtifact><pluginId>grpc-java</pluginId><pluginArtifact>io.grpc:protoc-gen-grpc-java:${grpc.version}:exe:${os.detected.classifier}</pluginArtifact></configuration><executions><execution><goals><goal>compile</goal><goal>compile-custom</goal></goals></execution></executions></plugin>            </plugins></build>

3.将存放proto的文件 变成 source 目录

4.选择存放文件的目录

参考:

https://www.cnblogs.com/liugh/p/7505533.html

idea导入Protocol buffers编译的代码报错,无法导入_idea protobuf 报错-CSDN博客

IntelliJ IDEA 中找不到 protocol buffer 生成的 Java 类的解决方法_idea.max.intellisense.filesize-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/27870.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++语法05 浮点型/实数类型

什么是实数类型 实数类型是一种数据类型&#xff0c;实数类型变量里能存放小数和整数。 定义格式&#xff1a;double a; 赋值&#xff1a;a0.4; 输入&#xff1a;cin>>a; 输出&#xff1a;cout<<a; 训练&#xff1a;尺子的价格 小知在文具店买铅笔&#xff…

RIP路由协议汇总(华为)

#交换设备 RIP路由协议汇总 一、原理概述 当网络中路由器的路由条目非常多时&#xff0c;可以通过路由汇总&#xff08;又称路由汇聚或路由聚合&#xff09;来减少路由条目数&#xff0c;加快路由收敛时间和增强网络稳定性。路由汇总的原理是&#xff0c;同一个自然网段内的不…

英语复习之英语反义词总结(七)

接下来总结一些英语反义词。 单词 (英式发音 / 美式发音) 释义 (词性) 例句 (中文翻译) Absent (/bsənt/ /ˈbsənt/) 缺席的 (adj) She was absent from school yesterday. (她昨天缺席了学校。) His absence was noted by everyone. (每个人都注意到了他的缺席。) Pre…

基数和基数转换

目录 一、定义&#xff1a; 二、各个进制&#xff1a; 1、二进制&#xff1a; 2、八进制&#xff1a; 3、十进制&#xff1a; 4、十六进制&#xff1a; 三、基数转换&#xff1a; 1、各类基数转十进制&#xff1a; 二转十&#xff1a; 八转十&#xff1a; 十六转八&a…

Maven 项目的创建(导入依赖、仓库、maven的配置、配置国内源、以及可能遇到的问题)

一、创建Maven项目 使用的编译软件&#xff1a;idea 软件版本&#xff1a; 社区版 2021.1 - 2022.4&#xff08;为什么选择这个版本&#xff0c;因为只有这个版本里有一些插件是可以安装的&#xff09; 专业版不限制&#xff08;专业版功能是最全的&#xff0c;但是收费&am…

【操作与配置】Pytorch环境搭建

安装显卡驱动 显卡驱动是一种软件程序&#xff0c;用于控制显卡硬件与操作系统之间的通信和交互。显卡驱动负责向操作系统提供有关显卡硬件的信息&#xff0c;以及使操作系统能够正确地控制和管理显卡的各种功能和性能。显卡驱动还包含了针对不同应用程序和游戏的优化&#xff…

Docker 命令大全

前言 Docker 是一个开源的容器化平台&#xff0c;使开发人员能够轻松地创建、部署和运行应用程序。它通过容器技术将应用程序及其所有依赖项打包在一起&#xff0c;确保在任何环境中都能一致运行。掌握 Docker 命令行工具是使用 Docker 的关键。本文将详细介绍常用的 Docker 命…

C语言入门学习系列:基本语法

目录 引言1. 标准库与头文件2. 语句3. 表达式3.1 表达式在赋值语句中3.2 表达式在控制结构中3.3 表达式作为函数参数3.4 表达式和语句的区别 4. 语句块5. 空格6. 注释7. printf() 函数7.1 基本用法7.2 占位符7.3 输出格式 引言 #include <stdio.h>int main(void) {int a…

能耗分析与远程抄表是什么?

一、引言 在21世纪的数字化时代&#xff0c;能耗分析和远程抄表已成为现代能源管理的重要组成部分。这两项技术不仅提高了能源效率&#xff0c;还为企业和个人提供了更精细的能源使用数据&#xff0c;从而实现更科学的节能减排。 二、能耗分析的深度洞察 能耗分析是通过收集…

深入理解计算机系统 CSAPP 家庭作业6.36

A:100% 数组x的大小是缓存的两倍, x[0][0]-x[0][127]刚好存满512字节,那就意味着x[1][0]映射在缓存的组0,那就意味着x[0][i]和x[1][i]总是读到缓存后又互相替换. B:25% 缓存变为1024字节,意味着x[1][0]被映射在缓存的组128 (组0到127存放x[0][0]到x[0][127]),所以每次读一行…

【React】useCallback和useMemo使用指南

useCallback和useMemo是React中两个用于优化性能的Hooks。以下是它们的使用指南,分点表示并归纳了关键信息: useCallback useCallback返回一个记忆化的回调函数,该回调函数只在它的依赖项发生改变时才会更新。这对于在组件渲染之间保持稳定的引用特别有用,可以防止不必要…

2024.6.15 英语六级 经验与复盘

文章目录 英语六级 经验与复盘2024年上半年六级考试(2024 6.8 - 6.15)前情提要&#xff1a;经验&#xff1a;作文&#xff1a;(30min)听力&#xff1a;(25min)SectionC(精细阅读) (30min)SectionB(段落匹配) (15min)SectionA(选词填空) (5min / 舍弃)翻译&#xff08;20min&…

整理好了!2024年最常见 20 道并发编程面试题(七)

上一篇地址&#xff1a;整理好了&#xff01;2024年最常见 20 道并发编程面试题&#xff08;六&#xff09;-CSDN博客 十三、请描述什么是生产者-消费者问题以及如何解决它。 生产者-消费者问题&#xff0c;也称为有限缓冲问题&#xff0c;是计算机科学和操作系统中的一个经典…

cs与msf权限传递,以及mimikatz抓取明文密码

cs与msf权限传递&#xff0c;以及mimikatz抓取win10明文密码 1、环境准备2、Cobalt Strike ------> MSF2.1 Cobalt Strike拿权限2.2 将CS权限传递给msf 3、MSF ------> Cobalt Strike3.1 msf拿权限3.2 将msf权限传递给CS 4、使用mimikatz抓取明文密码 1、环境准备 攻击&…

PostgreSQL17优化器改进(4)允许UNION(没有ALL)使用MergeAppend

PostgreSQL17优化器改进(4)允许UNION(没有ALL)使用MergeAppend UNION存在的问题 到PostgreSQL16.3版本为止&#xff0c;UNION执行计划通常不是最优的&#xff0c;优化器有两种处理方法&#xff1a; 优化器只考虑使用Append节点并通过使用Hash Aggregate&#xff0c;Append -…

【人工智能】文本提取技术的算法延伸

✍&#x1f3fb;记录学习过程中的输出&#xff0c;坚持每天学习一点点~ ❤️希望能给大家提供帮助~欢迎点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;指点&#x1f64f; 文本提取技术中用到的算法 TF-IDF&#xff08;Term Frequency-Inverse Document Frequency…

无人机的发展

朋友们&#xff0c;你们知道吗&#xff1f;无人机的发展之路可谓是科技界的一股清流&#xff0c;风头正劲啊&#xff01;从最初简单的遥控飞机到现在各种智能功能的加持&#xff0c;无人机真是越来越神奇了&#xff01; 首先&#xff0c;无人机在航拍领域大放异彩&#xff01;无…

复杂度分析

大O复杂度表示法 例子1 int cal(int n) {int sum 0;int i 1;for (; i < n; i) {sum sum i;}return sum;}代码的 int sum 0和 int i 1需要1个unit_time的执行时间遍历那部分的代码&#xff0c;需要执行n遍&#xff0c;所以需要2n*untime_time的执行时间所以整个代码的…

Swift 是 C++ 的最佳继任者

苹果称 Swift 是 C 的最佳继任者 Swift 是苹果公司在 2014 年推出的&#xff0c;一款旨在替代 Objective-C 的编程语言。但苹果语言和运行时总监 Ted Kremenek 在 WWDC24 的主题演讲中表示&#xff0c;Swift 也将取代 C。 “Swift 的安全性、速度和易用性&#xff0c;加上内…

利用485缓存器实现两主一丛RS485串行通信

作者:艺捷自动化&#xff0c;其旗下产品有艺捷自动化网站和易为二维码小程序&#xff08;微信&#xff09; 对于工控自动化领域的电气工程师来说&#xff0c;基于RS485的串行通讯是最常见的。绝大部分仪表都能支持这种通讯方式。RS485通讯&#xff0c;是一种异步半双工模式&…