Skip to content

NullPointerException when selecting a Jira issue item in Issues panel

When I click on an issue item in the Issues panel, the Jira Integration plugin throws a NullPointerException and does not display the issue details.

The stack trace indicates that the plugin tries to access getWatchCount() from a null value returned by getWatches() inside JiraPanelUtil.createWatchesPanel().

This happens every time I select an issue, preventing the details panel from rendering correctly.

Steps to Reproduce:

  1. Open IntelliJ IDEA with the Jira Integration plugin installed.
  2. Connect to a Jira server and load the Issues list.
  3. Click on any issue in the list.
  4. Observe that the issue details are not displayed and a NullPointerException appears in the logs.

Expected Behavior:
The issue details panel should load properly, even if the watches field is null.

Actual Behavior:
An exception is thrown:

java.lang.NullPointerException: Cannot invoke "com.intellij.jira.rest.model.JiraIssueWatches.getWatchCount()" because the return value of "com.intellij.jira.rest.model.JiraIssue.getWatches()" is null at com.intellij.jira.util.JiraPanelUtil.createWatchesPanel(JiraPanelUtil.java:112) at com.intellij.jira.ui.panels.JiraIssuePreviewPanel.initContent(JiraIssuePreviewPanel.java:122) ...

Environment:

  • IntelliJ IDEA 2025.2.3 (Ultimate Edition)
  • Jira Integration plugin version: 5.1.0
  • OS: Windows 11
  • Java version: OpenJDK 64-Bit Server VM by JetBrains s.r.o.

Additional Notes:
It seems the plugin doesn’t handle null JiraIssue.getWatches() responses.
A simple null-check in JiraPanelUtil.createWatchesPanel() could prevent this exception and allow the panel to load normally.

java.lang.NullPointerException: Cannot invoke "com.intellij.jira.rest.model.JiraIssueWatches.getWatchCount()" because the return value of "com.intellij.jira.rest.model.JiraIssue.getWatches()" is null at com.intellij.jira.util.JiraPanelUtil.createWatchesPanel(JiraPanelUtil.java:112) at com.intellij.jira.ui.panels.JiraIssuePreviewPanel.initContent(JiraIssuePreviewPanel.java:122) at com.intellij.jira.ui.panels.JiraIssuePreviewPanel.(JiraIssuePreviewPanel.java:45) at com.intellij.jira.ui.panels.JiraIssueDetailsPanel.showIssue(JiraIssueDetailsPanel.java:54) at com.intellij.jira.ui.panels.JiraIssuesPanelMyListSelectionListener.valueChanged(JiraIssuesPanel.java:165) at java.desktop/javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:231) at java.desktop/javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:206) at java.desktop/javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:258) at java.desktop/javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:459) at java.desktop/javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:469) at java.desktop/javax.swing.DefaultListSelectionModel.setSelectionInterval(DefaultListSelectionModel.java:513) at java.desktop/javax.swing.JTable.changeSelectionModel(JTable.java:2441) at java.desktop/javax.swing.JTable.changeSelection(JTable.java:2510) at java.desktop/javax.swing.plaf.basic.BasicTableUIHandler.adjustSelection(BasicTableUI.java:1145) at java.desktop/javax.swing.plaf.basic.BasicTableUI$Handler.mousePressed(BasicTableUI.java:1068) at java.desktop/java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:288) at java.desktop/java.awt.Component.processMouseEvent(Component.java:6670) at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3394) at com.intellij.ui.table.JBTable.processMouseEvent(JBTable.java:800) at java.desktop/java.awt.Component.processEvent(Component.java:6438) at java.desktop/java.awt.Container.processEvent(Container.java:2266) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5043) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4871) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4963) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4574) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4518) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2810) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4871) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:783) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:728) at java.desktop/java.awt.EventQueue4.run(EventQueue.java:722) at java.base/java.security.AccessController.doPrivileged(AccessController.java:400) at java.base/java.security.ProtectionDomainJavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:98) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:755) at java.desktop/java.awt.EventQueue5.run(EventQueue.java:753) at java.base/java.security.AccessController.doPrivileged(AccessController.java:400) at java.base/java.security.ProtectionDomainJavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:752) at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:595) at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.kt:540) at com.intellij.ide.IdeEventQueue._dispatchEvent$lambda16(IdeEventQueue.kt:479) at com.intellij.platform.locking.impl.NestedLocksThreadingSupport.doRunWriteIntentReadAction(NestedLocksThreadingSupport.kt:666) at com.intellij.platform.locking.impl.NestedLocksThreadingSupport.runPreventiveWriteIntentReadAction(NestedLocksThreadingSupport.kt:640) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:479) at com.intellij.ide.IdeEventQueue.dispatchEventlambda12lambda11lambda10lambda9(IdeEventQueue.kt:313) at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:865) at com.intellij.ide.IdeEventQueue.dispatchEventlambda12lambda11lambda10(IdeEventQueue.kt:312) at com.intellij.ide.IdeEventQueueKt.performActivitylambda3(IdeEventQueue.kt:974) at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:118) at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:974) at com.intellij.ide.IdeEventQueue.dispatchEventlambda$12(IdeEventQueue.kt:307) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:347) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)

java.lang.NullPointerException: Cannot invoke "com.intellij.jira.rest.model.JiraIssueWatches.getWatchCount()" because the return value of "com.intellij.jira.rest.model.JiraIssue.getWatches()" is null at com.intellij.jira.util.JiraPanelUtil.createWatchesPanel(JiraPanelUtil.java:112) at com.intellij.jira.ui.panels.JiraIssuePreviewPanel.initContent(JiraIssuePreviewPanel.java:122) at com.intellij.jira.ui.panels.JiraIssuePreviewPanel.(JiraIssuePreviewPanel.java:45) at com.intellij.jira.ui.panels.JiraIssueDetailsPanel.showIssue(JiraIssueDetailsPanel.java:54) at com.intellij.jira.ui.panels.JiraIssuesPanelMyListSelectionListener.valueChanged(JiraIssuesPanel.java:165) at java.desktop/javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:231) at java.desktop/javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:193) at java.desktop/javax.swing.DefaultListSelectionModel.setValueIsAdjusting(DefaultListSelectionModel.java:771) at java.desktop/javax.swing.plaf.basic.BasicTableUIHandler.setValueIsAdjusting(BasicTableUI.java:983) at java.desktop/javax.swing.plaf.basic.BasicTableUI$Handler.mouseReleased(BasicTableUI.java:1196) at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:298) at java.desktop/java.awt.Component.processMouseEvent(Component.java:6673) at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3394) at com.intellij.ui.table.JBTable.processMouseEvent(JBTable.java:800) at java.desktop/java.awt.Component.processEvent(Component.java:6438) at java.desktop/java.awt.Container.processEvent(Container.java:2266) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5043) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4871) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4963) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4577) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4518) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2810) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4871) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:783) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:728) at java.desktop/java.awt.EventQueue4.run(EventQueue.java:722) at java.base/java.security.AccessController.doPrivileged(AccessController.java:400) at java.base/java.security.ProtectionDomainJavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:98) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:755) at java.desktop/java.awt.EventQueue5.run(EventQueue.java:753) at java.base/java.security.AccessController.doPrivileged(AccessController.java:400) at java.base/java.security.ProtectionDomainJavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:752) at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:595) at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.kt:540) at com.intellij.ide.IdeEventQueue._dispatchEvent$lambda16(IdeEventQueue.kt:479) at com.intellij.platform.locking.impl.NestedLocksThreadingSupport.doRunWriteIntentReadAction(NestedLocksThreadingSupport.kt:666) at com.intellij.platform.locking.impl.NestedLocksThreadingSupport.runPreventiveWriteIntentReadAction(NestedLocksThreadingSupport.kt:640) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:479) at com.intellij.ide.IdeEventQueue.dispatchEventlambda12lambda11lambda10lambda9(IdeEventQueue.kt:313) at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:865) at com.intellij.ide.IdeEventQueue.dispatchEventlambda12lambda11lambda10(IdeEventQueue.kt:312) at com.intellij.ide.IdeEventQueueKt.performActivitylambda3(IdeEventQueue.kt:974) at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:118) at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:974) at com.intellij.ide.IdeEventQueue.dispatchEventlambda$12(IdeEventQueue.kt:307) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:347) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)

Edited by Milad Hasanpour