IntelliJ 不断索引,当 src 文件处于焦点时

Posted

技术标签:

【中文标题】IntelliJ 不断索引,当 src 文件处于焦点时【英文标题】:IntelliJ constantly indexing, when src file is in focus 【发布时间】:2020-12-06 16:33:43 【问题描述】:

我有一个奇怪的 intellij 行为。 只要我关注像 *.j​​ava 这样的 src 文件,它就会不断地尝试重新索引我的项目。 任何项目都会发生这种情况。即使我有一个带有单个 src 文件的新项目。

我已将其重置为制造商状态,但它仍在尝试重新索引。

我使用的是 Ubuntu 18.04

日志输出: 2020-08-18 05:02:02,004 [260523] 信息 - indexing.UnindexedFilesUpdater - 未索引文件更新开始:0 个文件要索引 2020-08-18 05:02:02,602 [261121] INFO - pl.ProjectRootManagerComponent - 项目根已更改(已使用 trace_hash = 676357740 报告堆栈跟踪) 2020-08-18 05:02:02,609 [261128] INFO - .diagnostic.PerformanceWatcher - 推送属性需要 3 毫秒;一般反应:好的; EDT 响应能力:好的

我在日志中发现了这个异常,这似乎是根本原因

2020-08-18 05:11:52,721 [126435] 信息 - pl.ProjectRootManagerComponent - 项目根已更改(trace_hash = 30135350) java.lang.Throwable 在 com.intellij.openapi.roots.impl.ProjectRootManagerComponent.synchronizeRoots(ProjectRootManagerComponent.java:306) 在 com.intellij.openapi.roots.impl.ProjectRootManagerComponent.fireRootsChangedEvent(ProjectRootManagerComponent.java:210) 在 com.intellij.openapi.roots.impl.ProjectRootManagerImpl.fireRootsChanged(ProjectRootManagerImpl.java:428) 在 com.intellij.openapi.roots.impl.ProjectRootManagerImpl.access 200 美元(ProjectRootManagerImpl.java:37) 在 com.intellij.openapi.roots.impl.ProjectRootManagerImpl$BatchSession.rootsChanged(ProjectRootManagerImpl.java:96) 在 com.intellij.openapi.roots.impl.ProjectRootManagerImpl.makeRootsChange(ProjectRootManagerImpl.java:371) 在 com.intellij.openapi.roots.impl.ProjectRootManagerImpl$RootProviderChangeListener.rootSetChanged(ProjectRootManagerImpl.java:668) 在 jdk.internal.reflect.GeneratedMethodAccessor532.invoke(未知来源) 在 java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.base/java.lang.reflect.Method.invoke(Method.java:566) 在 com.intellij.util.EventDispatcher.dispatchVoidMethod(EventDispatcher.java:123) 在 com.intellij.util.EventDispatcher.lambda$createMulticaster$1(EventDispatcher.java:86) 在 com.sun.proxy.$Proxy174.rootSetChanged(未知来源) 在 com.intellij.openapi.roots.impl.RootProviderBaseImpl.fireRootSetChanged(RootProviderBaseImpl.java:47) 在 com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:980) 在 com.intellij.openapi.projectRoots.impl.ProjectJdkImpl$MyRootProvider.rootsChanged(ProjectJdkImpl.java:291) 在 com.intellij.openapi.projectRoots.impl.ProjectJdkImpl.copyTo(ProjectJdkImpl.java:267) 在 com.intellij.openapi.projectRoots.impl.ProjectJdkImpl.commitChanges(ProjectJdkImpl.java:309) 在 com.intellij.codeInspection.magicConstant.MagicConstantInspection.lambda$attachAnnotationsLaterTo$1(MagicConstantInspection.java:182) 在 com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:201) 在 com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:802) 在 com.intellij.openapi.application.impl.ApplicationImpl.lambda$invokeLater$4(ApplicationImpl.java:322) 在 com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:84) 在 com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:132) 在 com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:47) 在 com.intellij.openapi.application.impl.FlushQueue$FlushNow.run(FlushQueue.java:188) 在 java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313) 在 java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776) 在 java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727) 在 java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721) 在 java.base/java.security.AccessController.doPrivileged(本机方法) 在 java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) 在 java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746) 在 com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:967) 在 com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:839) 在 com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:450) 在 com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:744) 在 com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$9(IdeEventQueue.java:449) 在 com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:802) 在 com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:497) 在 java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) 在 java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) 在 java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) 在 java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) 在 java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 在 java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

【问题讨论】:

您是否将文件存储在本地驱动器上?在它发生的那一刻检查idea.log 文件 - 那里打印了什么? 如果您在项目中生成了文件(脚本的输出、日志文件等),请从项目中排除此类文件(marking file as plain text)或文件夹(setting folder as excluded),这样 IDE 就不会重新索引它们的任何变化。 将日志添加到问题中。我将尝试排除自动生成的文件 但是。它甚至在一个新的 java 项目中这样做,没有发生自动生成 【参考方案1】:

我发现了问题,但我无法向自己解释。 我通过 snap 安装了 intellij。此安装(不是设置)本身就是造成这种情况的原因。这可以通过通过 snap 重新安装来重现。 如果我在没有 snap 的情况下安装相同版本的 intellij,则不会出现此问题。

【讨论】:

【参考方案2】:

已知问题:IDEA-247322。解决方法是禁用 Preferences |编辑 |检查 |爪哇 |可能的错误 | 魔术常数检查

UPD:已在 2020.2.3 IDE 更新中修复。

【讨论】:

以上是关于IntelliJ 不断索引,当 src 文件处于焦点时的主要内容,如果未能解决你的问题,请参考以下文章

intellij idea 怎么在project里的src创建图片文件夹

单镜头反光相机弥散圆景深焦平面光圈

禁用特定文件夹上的 intellij 索引

重建 IntelliJ 项目索引

当应用程序处于后台/挂起状态时,CLLocation 不断更新

Intellij IDEA 需要永远更新索引