gtache / intellij-lsp

Plugin adding Language Server Protocol support for IntelliJ
Apache License 2.0
397 stars 48 forks source link

NullPointerException in LSP Support Plugin 1.6.1 #144

Open phiwu-gpdec opened 4 years ago

phiwu-gpdec commented 4 years ago

When i start IntelliJ 2020.1 and try to change configuration in welcome screen -> configure -> settings -> File and Code Templates, a null pointer exception is thrown:

cannot create configurable component

java.lang.NullPointerException
    at com.github.gtache.lsp.utils.FileUtils$.pathToUri(FileUtils.scala:186)
    at com.github.gtache.lsp.utils.FileUtils$.editorToProjectFolderUri(FileUtils.scala:165)
    at com.github.gtache.lsp.client.languageserver.wrapper.LanguageServerWrapperImpl$.forEditor(LanguageServerWrapperImpl.scala:56)
    at com.github.gtache.lsp.PluginMain$.editorClosed(PluginMain.scala:288)
    at com.github.gtache.lsp.editor.listeners.EditorListener.editorReleased(EditorListener.scala:15)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at com.intellij.util.EventDispatcher.dispatchVoidMethod(EventDispatcher.java:127)
    at com.intellij.util.EventDispatcher.access$000(EventDispatcher.java:21)
    at com.intellij.util.EventDispatcher$1.invoke(EventDispatcher.java:85)
    at com.sun.proxy.$Proxy88.editorReleased(Unknown Source)
    at com.intellij.openapi.editor.impl.EditorFactoryImpl.releaseEditor(EditorFactoryImpl.java:220)
    at com.intellij.ide.fileTemplates.impl.FileTemplateConfigurable.reset(FileTemplateConfigurable.java:324)
    at com.intellij.ide.fileTemplates.impl.FileTemplateConfigurable.setTemplate(FileTemplateConfigurable.java:97)
    at com.intellij.ide.fileTemplates.impl.AllFileTemplatesConfigurable.selectTemplate(AllFileTemplatesConfigurable.java:425)
    at com.intellij.ide.fileTemplates.impl.AllFileTemplatesConfigurable.onListSelectionChanged(AllFileTemplatesConfigurable.java:393)
    at com.intellij.ide.fileTemplates.impl.AllFileTemplatesConfigurable.access$000(AllFileTemplatesConfigurable.java:48)
    at com.intellij.ide.fileTemplates.impl.AllFileTemplatesConfigurable$1.onTemplateSelected(AllFileTemplatesConfigurable.java:187)
    at com.intellij.ide.fileTemplates.impl.FileTemplateTabAsList.lambda$new$1(FileTemplateTabAsList.java:48)
    at java.desktop/javax.swing.JList.fireSelectionValueChanged(JList.java:1804)
    at java.desktop/javax.swing.JList$ListSelectionHandler.valueChanged(JList.java:1818)
    at java.desktop/javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:219)
    at java.desktop/javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:199)
    at java.desktop/javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:246)
    at java.desktop/javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:443)
    at java.desktop/javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:453)
    at java.desktop/javax.swing.DefaultListSelectionModel.setSelectionInterval(DefaultListSelectionModel.java:497)
    at java.desktop/javax.swing.JList.setSelectedIndex(JList.java:2205)
    at com.intellij.ide.fileTemplates.impl.FileTemplateTabAsList.initSelection(FileTemplateTabAsList.java:87)
    at com.intellij.ide.fileTemplates.impl.FileTemplateTab.init(FileTemplateTab.java:64)
    at com.intellij.ide.fileTemplates.impl.AllFileTemplatesConfigurable.initLists(AllFileTemplatesConfigurable.java:469)
    at com.intellij.ide.fileTemplates.impl.AllFileTemplatesConfigurable.changeScheme(AllFileTemplatesConfigurable.java:651)
    at com.intellij.ide.fileTemplates.impl.AllFileTemplatesConfigurable$SchemesPanel$1.onSchemeChanged(AllFileTemplatesConfigurable.java:709)
    at com.intellij.ide.fileTemplates.impl.AllFileTemplatesConfigurable$SchemesPanel$1.onSchemeChanged(AllFileTemplatesConfigurable.java:696)
    at com.intellij.application.options.schemes.EditableSchemesCombo$6.actionPerformed(EditableSchemesCombo.java:169)
    at java.desktop/javax.swing.JComboBox.fireActionEvent(JComboBox.java:1264)
    at java.desktop/javax.swing.JComboBox.contentsChanged(JComboBox.java:1337)
    at java.desktop/javax.swing.AbstractListModel.fireContentsChanged(AbstractListModel.java:123)
    at java.desktop/javax.swing.DefaultComboBoxModel.setSelectedItem(DefaultComboBoxModel.java:94)
    at com.intellij.application.options.schemes.SchemesCombo$MyComboBoxModel.setSelectedItem(SchemesCombo.java:158)
    at java.desktop/javax.swing.DefaultComboBoxModel.addElement(DefaultComboBoxModel.java:132)
    at com.intellij.application.options.schemes.SchemesCombo.addItems(SchemesCombo.java:80)
    at com.intellij.application.options.schemes.SchemesCombo.resetSchemes(SchemesCombo.java:38)
    at com.intellij.application.options.schemes.EditableSchemesCombo.resetSchemes(EditableSchemesCombo.java:184)
    at com.intellij.application.options.schemes.AbstractSchemesPanel.resetSchemes(AbstractSchemesPanel.java:160)
    at com.intellij.ide.fileTemplates.impl.AllFileTemplatesConfigurable.createComponent(AllFileTemplatesConfigurable.java:321)
    at com.intellij.openapi.options.ex.ConfigurableWrapper.createComponent(ConfigurableWrapper.java:162)
    at com.intellij.openapi.options.ex.ConfigurableCardPanel.lambda$createConfigurableComponent$4(ConfigurableCardPanel.java:109)
    at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:894)
    at com.intellij.openapi.application.ReadAction.compute(ReadAction.java:61)
    at com.intellij.openapi.options.ex.ConfigurableCardPanel.createConfigurableComponent(ConfigurableCardPanel.java:105)
    at com.intellij.openapi.options.ex.ConfigurableCardPanel.lambda$create$0(ConfigurableCardPanel.java:54)
    at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:894)
    at com.intellij.openapi.application.ReadAction.compute(ReadAction.java:61)
    at com.intellij.openapi.options.ex.ConfigurableCardPanel.create(ConfigurableCardPanel.java:53)
    at com.intellij.openapi.options.newEditor.ConfigurableEditor$1.create(ConfigurableEditor.java:56)
    at com.intellij.openapi.options.newEditor.ConfigurableEditor$1.create(ConfigurableEditor.java:53)
    at com.intellij.ui.CardLayoutPanel.createValue(CardLayoutPanel.java:73)
    at com.intellij.ui.CardLayoutPanel.select(CardLayoutPanel.java:101)
    at com.intellij.ui.CardLayoutPanel.lambda$null$0(CardLayoutPanel.java:117)
    at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:201)
    at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:831)
    at com.intellij.openapi.application.impl.ApplicationImpl.lambda$invokeLater$4(ApplicationImpl.java:310)
    at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:80)
    at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:128)
    at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:46)
    at com.intellij.openapi.application.impl.FlushQueue$FlushNow.run(FlushQueue.java:184)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:974)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:847)
    at com.intellij.ide.IdeEventQueue.lambda$null$8(IdeEventQueue.java:449)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:728)
    at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$9(IdeEventQueue.java:448)
    at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:831)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:496)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:117)
    at java.desktop/java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:190)
    at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:235)
    at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:233)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.desktop/java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:233)
    at java.desktop/java.awt.Dialog.show(Dialog.java:1063)
    at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show(DialogWrapperPeerImpl.java:708)
    at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:437)
    at com.intellij.openapi.ui.DialogWrapper.doShow(DialogWrapper.java:1707)
    at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:1666)
    at com.intellij.ide.actions.ShowSettingsUtilImpl.showSettingsDialog(ShowSettingsUtilImpl.java:80)
    at com.intellij.ide.actions.ShowSettingsAction.perform(ShowSettingsAction.java:54)
    at com.intellij.ide.actions.ShowSettingsAction.actionPerformed(ShowSettingsAction.java:41)
    at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:280)
    at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAwareWithCallbacks(ActionUtil.java:274)
    at com.intellij.ui.popup.ActionPopupStep.performAction(ActionPopupStep.java:223)
    at com.intellij.ui.popup.ActionPopupStep.performAction(ActionPopupStep.java:213)
    at com.intellij.ui.popup.ActionPopupStep.lambda$onChosen$2(ActionPopupStep.java:207)
    at com.intellij.openapi.application.TransactionGuardImpl.performUserActivity(TransactionGuardImpl.java:94)
    at com.intellij.ui.popup.AbstractPopup.lambda$dispose$13(AbstractPopup.java:1454)
    at com.intellij.util.ui.UIUtil.invokeLaterIfNeeded(UIUtil.java:2319)
    at com.intellij.ide.IdeEventQueue.ifFocusEventsInTheQueue(IdeEventQueue.java:188)
    at com.intellij.ide.IdeEventQueue.executeWhenAllFocusEventsLeftTheQueue(IdeEventQueue.java:140)
    at com.intellij.openapi.wm.impl.FocusManagerImpl.doWhenFocusSettlesDown(FocusManagerImpl.java:171)
    at com.intellij.openapi.wm.impl.IdeFocusManagerImpl.doWhenFocusSettlesDown(IdeFocusManagerImpl.java:36)
    at com.intellij.ui.popup.AbstractPopup.dispose(AbstractPopup.java:1450)
    at com.intellij.ui.popup.WizardPopup.dispose(WizardPopup.java:152)
    at com.intellij.ui.popup.list.ListPopupImpl.dispose(ListPopupImpl.java:326)
    at com.intellij.ui.popup.PopupFactoryImpl$ActionGroupPopup.dispose(PopupFactoryImpl.java:301)
    at com.intellij.openapi.util.ObjectNode.lambda$execute$0(ObjectNode.java:111)
    at com.intellij.openapi.util.ObjectTree.executeActionWithRecursiveGuard(ObjectTree.java:184)
    at com.intellij.openapi.util.ObjectNode.execute(ObjectNode.java:71)
    at com.intellij.openapi.util.ObjectTree.executeAll(ObjectTree.java:134)
    at com.intellij.openapi.util.Disposer.dispose(Disposer.java:116)
    at com.intellij.openapi.util.Disposer.dispose(Disposer.java:106)
    at com.intellij.ui.popup.WizardPopup.disposeAllParents(WizardPopup.java:255)
    at com.intellij.ui.popup.list.ListPopupImpl.handleNextStep(ListPopupImpl.java:461)
    at com.intellij.ui.popup.list.ListPopupImpl._handleSelect(ListPopupImpl.java:415)
    at com.intellij.ui.popup.list.ListPopupImpl.handleSelect(ListPopupImpl.java:361)
    at com.intellij.ui.popup.PopupFactoryImpl$ActionGroupPopup.handleSelect(PopupFactoryImpl.java:321)
    at com.intellij.ui.popup.list.ListPopupImpl$MyMouseListener.mouseReleased(ListPopupImpl.java:526)
    at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:298)
    at java.desktop/java.awt.Component.processMouseEvent(Component.java:6651)
    at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3345)
    at com.intellij.ui.popup.list.ListPopupImpl$MyList.processMouseEvent(ListPopupImpl.java:583)
    at java.desktop/java.awt.Component.processEvent(Component.java:6416)
    at java.desktop/java.awt.Container.processEvent(Container.java:2263)
    at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5026)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4858)
    at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918)
    at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547)
    at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
    at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2773)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4858)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:778)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:751)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:749)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:748)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:974)
    at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.java:912)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:844)
    at com.intellij.ide.IdeEventQueue.lambda$null$8(IdeEventQueue.java:449)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:739)
    at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$9(IdeEventQueue.java:448)
    at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:831)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:502)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
rwperrott commented 4 years ago

Also this nonsense below in the "Welcome to IntelliJ IDEA", of IntelliJ IDEA Version 2020.2, possibly from option setting.

java.lang.NullPointerException
    at com.github.gtache.lsp.utils.FileUtils$.VFSToPath(FileUtils.scala:176)
    at com.github.gtache.lsp.utils.FileUtils$.editorToProjectFolderPath(FileUtils.scala:171)
    at com.github.gtache.lsp.utils.FileUtils$.editorToProjectFolderUri(FileUtils.scala:165)
    at com.github.gtache.lsp.PluginMain$.$anonfun$editorOpened$1(PluginMain.scala:135)
    at com.intellij.util.RunnableCallable.call(RunnableCallable.java:20)
    at com.intellij.util.RunnableCallable.call(RunnableCallable.java:11)
    at com.intellij.openapi.application.impl.ApplicationImpl$1.call(ApplicationImpl.java:268)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:668)
    at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:665)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:665)
    at java.base/java.lang.Thread.run(Thread.java:834)

No message NullPointer exceptions are a Red flag for lazy coding, for caller methods and called methods; at least guard called methods using Project Lombok @NonNull, use of an Objects guard method with message etc., or better still throw a more useful Throwable with message, to flag null bugs. The only methods which don't need explicit null checks are private ones where you know that the reference parameter will always be null checked by a caller earlier.

I'll probably disable this annoyance for now, because I don't seem to use it much.