无法让 IntelliJ 识别 proto 编译的 Java 类文件

Posted

技术标签:

【中文标题】无法让 IntelliJ 识别 proto 编译的 Java 类文件【英文标题】:Unable to get IntelliJ to recognize proto compiled Java class files 【发布时间】:2015-05-05 18:03:04 【问题描述】:

我们的项目中有一个 build.xml,但 IntelliJ 无法从中导入。我得到一个:

Cannot import anything from <path_to>/build.xml file.

在 Eclipse 上我可以:

File -> Import -> General -> Existing Projects into workspace.

并选择***文件夹。我在 IJ 也做了同样的事情。项目导入和索引很好,我可以搜索任何类。但是,它不能识别 protobuf 编译的类文件。我安装了 proto 插件,因此它的语法突出显示了我的 .proto 文件,但仍然没有意识到它需要引用一个已编译的类输出。我需要做一些特别的事情来让它识别这些文件吗?

【问题讨论】:

【参考方案1】:

因为这几乎是我唯一能找到准确描述我在 Idea 中遇到的问题的地方,所以即使这是一个老问题,我也会回复。

事实证明,如果由 protocol buffers 编译器生成的 .java 文件大于 2.5MB(默认设置),Idea 会完全忽略它。即使有.class 文件,即使编译/制作成功,即使您使用 Maven 构建项目也可以。

要解决此问题,只需编辑您的 idea.properties 文件(它位于 Idea 安装文件夹中的 bin 文件夹内),然后注释掉此设置,或将其设置为大于生成的 .java 文件(就我而言,我将其设置为15000,因为我生成的文件目前大小约为 8MB):

#---------------------------------------------------------------------
# Maximum file size (kilobytes) IDE should provide code assistance for.
# The larger file is the slower its editor works and higher overall system memory requirements are
# if code assistance is enabled. Remove this property or set to very large number if you need
# code assistance for any files available regardless their size.
#---------------------------------------------------------------------
idea.max.intellisense.filesize=2500

注意:至少在 Linux 上,默认更新策略似乎是“用刚刚下载的内容覆盖旧的 Idea 文件夹”,每次更新/升级后都必须应用此更改。

【讨论】:

也适用于我,但我仍然觉得该文档令人困惑。我不想想要在编辑器中打开文件,也不想得到代码帮助。恰恰相反,如果我碰巧在想法中意外打开文件,我想避免代码帮助,以免崩溃/阻止它。有没有办法独立于编辑器中的代码辅助限制来配置编译限制? 花了几个小时试图解决这个问题,非常感谢!【参考方案2】:

米歇尔回答的扩展,

Mac 中没有 bin 文件夹。

在 macOS 中,当 Intellij 无法识别 proto 编译的 Java 类文件时,

从帮助菜单 ---> 选择编辑自定义属性。它可能会要求您在

下创建 idea.properties 文件
$HOME//Library/Application\ Support/JetBrains/IdeaIC2020.1/

创建属性 idea.max.intellisense.filesize=2500 并设置该值以适应您的大型原始编译文件以供 IntelliJ 识别。

【讨论】:

macos中有bin文件夹,在Application文件夹中点击idea,选择Show package content

以上是关于无法让 IntelliJ 识别 proto 编译的 Java 类文件的主要内容,如果未能解决你的问题,请参考以下文章

IntelliJ 无法识别来自 gradle 项目的某些导入

Intellij 无法识别 h2 表

IntelliJ IDEA 无法识别属性文件

IntelliJ git 无法识别角度项目文件中的更改

在 Intellij 中无法识别 Gradle 依赖项

IntelliJ 无法识别 Kotlin JPA 插件