PMD-Intellij icon indicating copy to clipboard operation
PMD-Intellij copied to clipboard

Mark 2.x release compatible with upcoming 2024.2

Open uhafner opened this issue 1 year ago • 3 comments

Last week beta testing of IntelliJ 2024.2 started, it would be helpful if you can exend the supported list of IntelliJ version so that one would not get the 1.8.x version installed when clicking on the install button. The 1.8.x version creates a lot of NPEs right after the start...

Bildschirmfoto 2024-07-14 um 09 52 43

uhafner avatar Jul 14 '24 07:07 uhafner

I agree, the latest version compatible with 2024.2 is 1.8.18 :(

marcindabrowski avatar Aug 19 '24 12:08 marcindabrowski

This solves hopefully also issue #178

Gerard414 avatar Aug 29 '24 08:08 Gerard414

Fixed in PR #179

martenbohlin avatar Sep 07 '24 13:09 martenbohlin

Ok, I can install the plugin now. However, after startup I get the following exceptions:

Cannot create com.intellij.plugins.bodhi.pmd.PMDProjectComponent

com.intellij.ide.plugins.StartupAbortedException: Fatal error initializing plugin PMDPlugin
	at com.intellij.serviceContainer.ComponentManagerImplKt.handleComponentError(ComponentManagerImpl.kt:1453)
	at com.intellij.serviceContainer.ComponentInstanceInitializer.createInstance$suspendImpl(ComponentInstanceInitializer.kt:41)
	at com.intellij.serviceContainer.ComponentInstanceInitializer.createInstance(ComponentInstanceInitializer.kt)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder$initialize$1$1.invokeSuspend(LazyInstanceHolder.kt:162)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder$initialize$1$1.invoke(LazyInstanceHolder.kt)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder$initialize$1$1.invoke(LazyInstanceHolder.kt)
	at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:62)
	at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:163)
	at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder$initialize$1.invokeSuspend(LazyInstanceHolder.kt:160)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder$initialize$1.invoke(LazyInstanceHolder.kt)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder$initialize$1.invoke(LazyInstanceHolder.kt)
	at kotlinx.coroutines.intrinsics.UndispatchedKt.startCoroutineUndispatched(Undispatched.kt:27)
	at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:90)
	at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:123)
	at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:52)
	at kotlinx.coroutines.BuildersKt.launch(Unknown Source)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder.initialize(LazyInstanceHolder.kt:145)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder.access$initialize(LazyInstanceHolder.kt:13)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder.tryInitialize(LazyInstanceHolder.kt:135)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder.getInstance(LazyInstanceHolder.kt:95)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder.getInstanceInCallerContext$suspendImpl(LazyInstanceHolder.kt:87)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder.getInstanceInCallerContext(LazyInstanceHolder.kt)
	at com.intellij.platform.instanceContainer.internal.UtilKt.preloadAllInstances(util.kt:47)
	at com.intellij.serviceContainer.ComponentManagerImpl.createComponentsNonBlocking(ComponentManagerImpl.kt:512)
	at com.intellij.openapi.project.impl.ProjectManagerImplKt$initProject$2$3.invokeSuspend(ProjectManagerImpl.kt:1256)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:608)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:873)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:763)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:750)
Caused by: com.intellij.diagnostic.PluginException: Argument for @NotNull parameter 'actionManager' of com/intellij/openapi/actionSystem/DefaultActionGroup.getChildren must not be null [Plugin: PMDPlugin]
	... 32 more
Caused by: java.lang.IllegalArgumentException: Argument for @NotNull parameter 'actionManager' of com/intellij/openapi/actionSystem/DefaultActionGroup.getChildren must not be null
	at com.intellij.openapi.actionSystem.DefaultActionGroup.$$$reportNull$$$0(DefaultActionGroup.java)
	at com.intellij.openapi.actionSystem.DefaultActionGroup.getChildren(DefaultActionGroup.java)
	at com.intellij.plugins.bodhi.pmd.PMDProjectComponent.updateCustomRulesMenu(PMDProjectComponent.java:124)
	at com.intellij.plugins.bodhi.pmd.PMDProjectComponent.initComponent(PMDProjectComponent.java:80)
	at com.intellij.serviceContainer.ComponentInstanceInitializer.createInstance$suspendImpl(ComponentInstanceInitializer.kt:27)
	... 30 more

and

ExternalToolPass: 

com.intellij.diagnostic.PluginException: annotator: com.intellij.plugins.bodhi.pmd.annotator.PMDExternalAnnotator@418c5b4b (class com.intellij.plugins.bodhi.pmd.annotator.PMDExternalAnnotator) [Plugin: PMDPlugin]
	at com.intellij.diagnostic.PluginProblemReporterImpl.createPluginExceptionByClass(PluginProblemReporterImpl.java:23)
	at com.intellij.diagnostic.PluginException.createByClass(PluginException.java:90)
	at com.intellij.codeInsight.daemon.impl.ExternalToolPass.processError(ExternalToolPass.java:253)
	at com.intellij.codeInsight.daemon.impl.ExternalToolPass.collectInformationWithProgress(ExternalToolPass.java:133)
	at com.intellij.codeInsight.daemon.impl.ProgressableTextEditorHighlightingPass.doCollectInformation(ProgressableTextEditorHighlightingPass.java:84)
	at com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:57)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$2(PassExecutorService.java:418)
	at com.intellij.platform.diagnostic.telemetry.helpers.TraceKt.runWithSpanIgnoreThrows(trace.kt:118)
	at com.intellij.platform.diagnostic.telemetry.helpers.TraceUtil.runWithSpanThrows(TraceUtil.java:36)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$3(PassExecutorService.java:413)
	at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.tryRunReadAction(AnyThreadWriteThreadingSupport.kt:291)
	at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:965)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$4(PassExecutorService.java:404)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:660)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:735)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:691)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:659)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:79)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.doRun(PassExecutorService.java:403)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$run$0(PassExecutorService.java:379)
	at com.intellij.openapi.fileTypes.impl.FileTypeManagerImpl.cacheFileTypesInside(FileTypeManagerImpl.java:802)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$run$1(PassExecutorService.java:379)
	at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.executeByImpatientReader(AnyThreadWriteThreadingSupport.kt:486)
	at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:178)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:377)
	at com.intellij.concurrency.JobLauncherImpl$VoidForkJoinTask$1.exec(JobLauncherImpl.java:190)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:507)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1491)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:2073)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:2035)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:187)
Caused by: com.intellij.ide.plugins.StartupAbortedException: Fatal error initializing plugin PMDPlugin
	at com.intellij.serviceContainer.ComponentManagerImplKt.handleComponentError(ComponentManagerImpl.kt:1453)
	at com.intellij.serviceContainer.ComponentInstanceInitializer.createInstance$suspendImpl(ComponentInstanceInitializer.kt:41)
	at com.intellij.serviceContainer.ComponentInstanceInitializer.createInstance(ComponentInstanceInitializer.kt)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder$initialize$1$1.invokeSuspend(LazyInstanceHolder.kt:162)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder$initialize$1$1.invoke(LazyInstanceHolder.kt)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder$initialize$1$1.invoke(LazyInstanceHolder.kt)
	at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:62)
	at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:163)
	at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder$initialize$1.invokeSuspend(LazyInstanceHolder.kt:160)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder$initialize$1.invoke(LazyInstanceHolder.kt)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder$initialize$1.invoke(LazyInstanceHolder.kt)
	at kotlinx.coroutines.intrinsics.UndispatchedKt.startCoroutineUndispatched(Undispatched.kt:27)
	at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:90)
	at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:123)
	at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:52)
	at kotlinx.coroutines.BuildersKt.launch(Unknown Source)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder.initialize(LazyInstanceHolder.kt:145)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder.access$initialize(LazyInstanceHolder.kt:13)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder.tryInitialize(LazyInstanceHolder.kt:135)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder.getInstance(LazyInstanceHolder.kt:95)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder.getInstanceInCallerContext$suspendImpl(LazyInstanceHolder.kt:87)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder.getInstanceInCallerContext(LazyInstanceHolder.kt)
	at com.intellij.platform.instanceContainer.internal.UtilKt.preloadAllInstances(util.kt:47)
	at com.intellij.serviceContainer.ComponentManagerImpl.createComponentsNonBlocking(ComponentManagerImpl.kt:512)
	at com.intellij.openapi.project.impl.ProjectManagerImplKt$initProject$2$3.invokeSuspend(ProjectManagerImpl.kt:1256)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:608)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:873)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:763)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:750)
Caused by: com.intellij.diagnostic.PluginException: Argument for @NotNull parameter 'actionManager' of com/intellij/openapi/actionSystem/DefaultActionGroup.getChildren must not be null [Plugin: PMDPlugin]
	... 32 more
Caused by: java.lang.IllegalArgumentException: Argument for @NotNull parameter 'actionManager' of com/intellij/openapi/actionSystem/DefaultActionGroup.getChildren must not be null
	at com.intellij.openapi.actionSystem.DefaultActionGroup.$$$reportNull$$$0(DefaultActionGroup.java)
	at com.intellij.openapi.actionSystem.DefaultActionGroup.getChildren(DefaultActionGroup.java)
	at com.intellij.plugins.bodhi.pmd.PMDProjectComponent.updateCustomRulesMenu(PMDProjectComponent.java:124)
	at com.intellij.plugins.bodhi.pmd.PMDProjectComponent.initComponent(PMDProjectComponent.java:80)
	at com.intellij.serviceContainer.ComponentInstanceInitializer.createInstance$suspendImpl(ComponentInstanceInitializer.kt:27)
	... 30 more

uhafner avatar Sep 20 '24 16:09 uhafner

This error seems to only happen if you have multiple projects open i IntelliJ. I will take look and see if I can fix that

martenbohlin avatar Sep 21 '24 10:09 martenbohlin

I'm still seeing this problem on IntelliJ 2024.2.4 with PMD Plugin 2.0.2.

Are there any known fixes or workarounds?

jdelker avatar Nov 18 '24 13:11 jdelker

@jdelker The exception stacktrace is from bug #185 which will be fixed with the next release

adangel avatar Nov 19 '24 18:11 adangel

@amitdev / @jborgers - this issues has already been fixed with 2.0.2 via #179 , but the issue was forgotten to be closed.

adangel avatar Nov 19 '24 18:11 adangel

Should be fixed with the upcoming version 2.0.3 (or check with v2.0.3-snapshot)

jborgers avatar Nov 19 '24 20:11 jborgers

We have the same problem again with the next EAP builds for 2025.1. Since the current release of 2.0.3 is marked for 2024.1 — 2024.3.3 only I get the very outdated version of 1.8.12 deployed in IntelliJ version 2025.1: this version throws a lot of exceptions.

Can we reopen this issue or should I create a new one?

Wouldn't it make more sense to set the minimum version only and let the maximum version unrestricted?

uhafner avatar Feb 13 '25 08:02 uhafner