com.intellij.openapi.project.IndexNotReadyException文档

时间:2019-01-08 17:36:28

标签: intellij-idea intellij-plugin

我正在制作一个intellij插件。当我在selectionChanged的{​​{1}}方法中运行一些代码时,会收到此通知。

我不知道文档所指的是什么-所有对此问题的引用都趋向于一些android bug,但是我不在android上工作,这是一个实际的intellij插件。

任何想法-我怀疑我是在应用程序编制索引时不要“运行”此代码,但我不确定如何执行此操作。

1 个答案:

答案 0 :(得分:-3)

答案很简单-尽管,当然,intellij团队似乎想让他们的插件代码很难理解。人们为什么不理会实际文档,这只是我的事。真是可惜。

这里:

@Override
public void fileOpened(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
   try {
      showItem(toolWindow.getComponent(), file);
   } catch (IndexNotReadyException ex) {
      DumbService.getInstance(project).runWhenSmart(() -> showItem(toolWindow.getComponent(), file) );
   }
}

诀窍是包装在try / catch块中,然后使用“ DumbService”。这不是一个完整的解决方案,Doco神秘地警告他们使用DumbService可能需要一些检查...

...但是,如果编写文档的人不能费心表达检查内容,而编写代码的人也可以不费心力写不需要检查的代码那我在乎什么。

我的意思是,这不像核弹会爆炸,对吗?