Skip to content

Conversation

@shartte
Copy link
Contributor

@shartte shartte commented Dec 21, 2025

Example exception:

java.lang.RuntimeException: java.lang.NullPointerException: Cannot invoke "com.intellij.codeInsight.ExternalAnnotationsManager.findExternalTypeAnnotations(com.intellij.psi.PsiModifierListOwner, String)" because the return value of "com.intellij.codeInsight.ExternalAnnotationsManager.getInstance(com.intellij.openapi.project.Project)" is null
	at net.neoforged.jst.cli.OrderedParallelWorkQueue.drainTo(OrderedParallelWorkQueue.java:97)
	at net.neoforged.jst.cli.OrderedParallelWorkQueue.submitAsync(OrderedParallelWorkQueue.java:48)
	at net.neoforged.jst.cli.SourceFileProcessor.lambda$process$2(SourceFileProcessor.java:76)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:186)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:214)
	at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
	at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:570)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)
	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:153)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:176)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)
	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:632)
	at net.neoforged.jst.cli.SourceFileProcessor.process(SourceFileProcessor.java:76)
	at net.neoforged.jst.cli.Main.call(Main.java:96)
	at net.neoforged.jst.cli.Main.call(Main.java:22)
	at picocli.CommandLine.executeUserObject(CommandLine.java:2045)
	at picocli.CommandLine.access$1500(CommandLine.java:148)
	at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2465)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2457)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2419)
	at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2277)
	at picocli.CommandLine$RunLast.execute(CommandLine.java:2421)
	at picocli.CommandLine.execute(CommandLine.java:2174)
	at net.neoforged.jst.cli.Main.innerMain(Main.java:71)
	at net.neoforged.jst.cli.Main.main(Main.java:57)
Caused by: java.lang.NullPointerException: Cannot invoke "com.intellij.codeInsight.ExternalAnnotationsManager.findExternalTypeAnnotations(com.intellij.psi.PsiModifierListOwner, String)" because the return value of "com.intellij.codeInsight.ExternalAnnotationsManager.getInstance(com.intellij.openapi.project.Project)" is null
	at com.intellij.psi.impl.cache.ExternalTypeAnnotationContainer$1.getAnnotations(ExternalTypeAnnotationContainer.java:57)
	at com.intellij.psi.PsiType.getAnnotations(PsiType.java:314)
	at com.intellij.psi.impl.source.PsiClassReferenceType.getAnnotations(PsiClassReferenceType.java:87)
	at com.intellij.psi.impl.source.PsiClassReferenceType.isValid(PsiClassReferenceType.java:61)
	at com.intellij.psi.impl.TypeCorrector$PsiCorrectedClassType.isValid(TypeCorrector.java:222)
	at com.intellij.psi.util.PsiUtil.ensureValidType(PsiUtil.java:1338)
	at com.intellij.psi.util.PsiUtil.ensureValidType(PsiUtil.java:1319)
	at com.intellij.psi.impl.PsiSubstitutorImpl.lambda$ensureValid$2(PsiSubstitutorImpl.java:368)
	at com.intellij.util.containers.UnmodifiableHashMap$3.forEach(UnmodifiableHashMap.java:643)
	at com.intellij.psi.impl.PsiSubstitutorImpl.ensureValid(PsiSubstitutorImpl.java:366)
	at com.intellij.psi.impl.source.PsiImmediateClassType.<init>(PsiImmediateClassType.java:119)
	at com.intellij.psi.impl.PsiSubstitutorImpl$SubstitutionVisitor.visitClassType(PsiSubstitutorImpl.java:216)
	at com.intellij.psi.impl.PsiSubstitutorImpl$SubstitutionVisitor.visitClassType(PsiSubstitutorImpl.java:152)
	at com.intellij.psi.PsiClassType.accept(PsiClassType.java:231)
	at com.intellij.psi.impl.PsiSubstitutorImpl.substitute(PsiSubstitutorImpl.java:95)
	at com.intellij.psi.impl.source.tree.java.PsiMethodCallExpressionImpl.captureReturnType(PsiMethodCallExpressionImpl.java:233)
	at com.intellij.psi.impl.source.tree.java.PsiMethodCallExpressionImpl.access$200(PsiMethodCallExpressionImpl.java:31)
	at com.intellij.psi.impl.source.tree.java.PsiMethodCallExpressionImpl$TypeEvaluator.getResultType(PsiMethodCallExpressionImpl.java:201)
	at com.intellij.psi.impl.source.tree.java.PsiMethodCallExpressionImpl$TypeEvaluator.fun(PsiMethodCallExpressionImpl.java:158)
	at com.intellij.psi.impl.source.tree.java.PsiMethodCallExpressionImpl$TypeEvaluator.fun(PsiMethodCallExpressionImpl.java:136)
	at com.intellij.psi.impl.source.resolve.JavaResolveCache.lambda$getType$0(JavaResolveCache.java:56)
	at com.intellij.psi.util.CachedValuesManager$PsiDependentHandlerProvider.compute(CachedValuesManager.java:166)
	at com.intellij.psi.util.CachedValuesManager$PsiDependentHandlerProvider.compute(CachedValuesManager.java:159)
	at com.intellij.psi.impl.PsiParameterizedCachedValue.doCompute(PsiParameterizedCachedValue.kt:24)
	at com.intellij.util.CachedValueBase.lambda$getValueWithLock$3(CachedValueBase.java:299)
	at com.intellij.util.CachedValueBase.computeData(CachedValueBase.java:37)
	at com.intellij.util.CachedValueBase.lambda$getValueWithLock$4(CachedValueBase.java:299)
	at com.intellij.openapi.util.RecursionManager$1.computePreventingRecursion(RecursionManager.java:113)
	at com.intellij.openapi.util.RecursionGuard.doPreventingRecursion(RecursionGuard.java:28)
	at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
	at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:300)
	at com.intellij.psi.impl.PsiParameterizedCachedValue.getValue(PsiParameterizedCachedValue.kt:18)
	at com.intellij.psi.util.CachedValuesManager.getParameterizedCachedValue(CachedValuesManager.java:97)
	at com.intellij.psi.util.CachedValuesManager.getProjectPsiDependentCache(CachedValuesManager.java:156)
	at com.intellij.psi.impl.source.resolve.JavaResolveCache.getType(JavaResolveCache.java:56)
	at com.intellij.psi.impl.source.tree.java.PsiMethodCallExpressionImpl.getType(PsiMethodCallExpressionImpl.java:40)
	at com.intellij.psi.scope.util.PsiScopesUtil.setupAndRunProcessor(PsiScopesUtil.java:309)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.resolveToMethod(PsiReferenceExpressionImpl.java:309)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.resolve(PsiReferenceExpressionImpl.java:288)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.access$000(PsiReferenceExpressionImpl.java:45)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$OurGenericsResolver.resolve(PsiReferenceExpressionImpl.java:196)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$OurGenericsResolver.resolve(PsiReferenceExpressionImpl.java:186)
	at com.intellij.psi.impl.source.resolve.ResolveCache.lambda$resolveWithCaching$2(ResolveCache.java:182)
	at com.intellij.openapi.util.Computable.get(Computable.java:16)
	at com.intellij.psi.impl.source.resolve.ResolveCache.lambda$loggingResolver$4(ResolveCache.java:242)
	at com.intellij.openapi.util.RecursionManager$1.computePreventingRecursion(RecursionManager.java:113)
	at com.intellij.openapi.util.RecursionGuard.doPreventingRecursion(RecursionGuard.java:28)
	at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolve(ResolveCache.java:220)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:182)
	at com.intellij.psi.impl.PsiImplUtil.multiResolveImpl(PsiImplUtil.java:835)
	at com.intellij.psi.impl.PsiImplUtil.multiResolveImpl(PsiImplUtil.java:827)
	at com.intellij.psi.impl.PsiImplUtil.multiResolveImpl(PsiImplUtil.java:803)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.multiResolve(PsiReferenceExpressionImpl.java:351)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.advancedResolve(PsiReferenceExpressionImpl.java:509)
	at com.intellij.psi.impl.source.tree.java.PsiMethodCallExpressionImpl.resolveMethodGenerics(PsiMethodCallExpressionImpl.java:50)
	at com.intellij.psi.PsiDiamondType.getDiamondsAwareResolveResult(PsiDiamondType.java:187)
	at com.intellij.psi.LambdaUtil.getFunctionalInterfaceType(LambdaUtil.java:413)
	at com.intellij.psi.impl.source.PsiParameterImpl.lambda$getLambdaParameterType$0(PsiParameterImpl.java:53)
	at com.intellij.openapi.util.RecursionManager$1.computePreventingRecursion(RecursionManager.java:113)
	at com.intellij.openapi.util.RecursionGuard.doPreventingRecursion(RecursionGuard.java:28)
	at com.intellij.psi.impl.source.PsiParameterImpl.getLambdaParameterType(PsiParameterImpl.java:52)
	at com.intellij.psi.impl.source.PsiParameterImpl.getType(PsiParameterImpl.java:143)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$TypeEvaluator.fun(PsiReferenceExpressionImpl.java:390)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$TypeEvaluator.fun(PsiReferenceExpressionImpl.java:366)
	at com.intellij.psi.impl.source.resolve.JavaResolveCache.lambda$getType$0(JavaResolveCache.java:56)
	at com.intellij.psi.util.CachedValuesManager$PsiDependentHandlerProvider.compute(CachedValuesManager.java:166)
	at com.intellij.psi.util.CachedValuesManager$PsiDependentHandlerProvider.compute(CachedValuesManager.java:159)
	at com.intellij.psi.impl.PsiParameterizedCachedValue.doCompute(PsiParameterizedCachedValue.kt:24)
	at com.intellij.util.CachedValueBase.lambda$getValueWithLock$3(CachedValueBase.java:299)
	at com.intellij.util.CachedValueBase.computeData(CachedValueBase.java:37)
	at com.intellij.util.CachedValueBase.lambda$getValueWithLock$4(CachedValueBase.java:299)
	at com.intellij.openapi.util.RecursionManager$1.computePreventingRecursion(RecursionManager.java:113)
	at com.intellij.openapi.util.RecursionGuard.doPreventingRecursion(RecursionGuard.java:28)
	at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
	at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:300)
	at com.intellij.psi.impl.PsiParameterizedCachedValue.getValue(PsiParameterizedCachedValue.kt:18)
	at com.intellij.psi.util.CachedValuesManager.getParameterizedCachedValue(CachedValuesManager.java:97)
	at com.intellij.psi.util.CachedValuesManager.getProjectPsiDependentCache(CachedValuesManager.java:156)
	at com.intellij.psi.impl.source.resolve.JavaResolveCache.getType(JavaResolveCache.java:56)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.getType(PsiReferenceExpressionImpl.java:426)
	at com.intellij.psi.util.PsiUtil.getAccessObjectClass(PsiUtil.java:138)
	at com.intellij.psi.impl.source.resolve.VariableResolverProcessor.<init>(VariableResolverProcessor.java:32)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.resolveToVariable(PsiReferenceExpressionImpl.java:344)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.resolve(PsiReferenceExpressionImpl.java:302)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.access$000(PsiReferenceExpressionImpl.java:45)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$OurGenericsResolver.resolve(PsiReferenceExpressionImpl.java:196)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$OurGenericsResolver.resolve(PsiReferenceExpressionImpl.java:186)
	at com.intellij.psi.impl.source.resolve.ResolveCache.lambda$resolveWithCaching$2(ResolveCache.java:182)
	at com.intellij.openapi.util.Computable.get(Computable.java:16)
	at com.intellij.psi.impl.source.resolve.ResolveCache.lambda$loggingResolver$4(ResolveCache.java:242)
	at com.intellij.openapi.util.RecursionManager$1.computePreventingRecursion(RecursionManager.java:113)
	at com.intellij.openapi.util.RecursionGuard.doPreventingRecursion(RecursionGuard.java:28)
	at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolve(ResolveCache.java:220)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:182)
	at com.intellij.psi.impl.PsiImplUtil.multiResolveImpl(PsiImplUtil.java:835)
	at com.intellij.psi.impl.PsiImplUtil.multiResolveImpl(PsiImplUtil.java:827)
	at com.intellij.psi.impl.PsiImplUtil.multiResolveImpl(PsiImplUtil.java:803)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.multiResolve(PsiReferenceExpressionImpl.java:351)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.advancedResolve(PsiReferenceExpressionImpl.java:509)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.isReferenceTo(PsiReferenceExpressionImpl.java:451)
	at net.neoforged.jst.parchment.GatherReplacementsVisitor.visitElement(GatherReplacementsVisitor.java:219)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.accept(PsiReferenceExpressionImpl.java:798)
	at com.intellij.psi.impl.source.tree.CompositePsiElement.acceptChildren(CompositePsiElement.java:64)
	at net.neoforged.jst.parchment.GatherReplacementsVisitor.visitElement(GatherReplacementsVisitor.java:226)
	at com.intellij.psi.impl.source.tree.java.PsiBinaryExpressionImpl.accept(PsiBinaryExpressionImpl.java:120)
	at com.intellij.psi.impl.source.tree.SharedImplUtil.acceptChildren(SharedImplUtil.java:183)
	at com.intellij.psi.impl.source.JavaStubPsiElement.acceptChildren(JavaStubPsiElement.java:112)
	at net.neoforged.jst.parchment.GatherReplacementsVisitor.visitElement(GatherReplacementsVisitor.java:226)
	at com.intellij.psi.impl.source.tree.java.PsiLambdaExpressionImpl.accept(PsiLambdaExpressionImpl.java:124)
	at com.intellij.psi.impl.source.tree.CompositePsiElement.acceptChildren(CompositePsiElement.java:64)
	at net.neoforged.jst.parchment.GatherReplacementsVisitor.visitElement(GatherReplacementsVisitor.java:226)
	at com.intellij.psi.impl.source.tree.java.PsiExpressionListImpl.accept(PsiExpressionListImpl.java:162)
	at com.intellij.psi.impl.source.tree.CompositePsiElement.acceptChildren(CompositePsiElement.java:64)
	at net.neoforged.jst.parchment.GatherReplacementsVisitor.visitElement(GatherReplacementsVisitor.java:226)
	at com.intellij.psi.impl.source.tree.java.PsiMethodCallExpressionImpl.accept(PsiMethodCallExpressionImpl.java:125)
	at com.intellij.psi.impl.source.tree.CompositePsiElement.acceptChildren(CompositePsiElement.java:64)
	at net.neoforged.jst.parchment.GatherReplacementsVisitor.visitElement(GatherReplacementsVisitor.java:226)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.accept(PsiReferenceExpressionImpl.java:798)
	at com.intellij.psi.impl.source.tree.CompositePsiElement.acceptChildren(CompositePsiElement.java:64)
	at net.neoforged.jst.parchment.GatherReplacementsVisitor.visitElement(GatherReplacementsVisitor.java:226)
	at com.intellij.psi.impl.source.tree.java.PsiMethodCallExpressionImpl.accept(PsiMethodCallExpressionImpl.java:125)
	at com.intellij.psi.impl.source.tree.CompositePsiElement.acceptChildren(CompositePsiElement.java:64)
	at net.neoforged.jst.parchment.GatherReplacementsVisitor.visitElement(GatherReplacementsVisitor.java:226)
	at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.accept(PsiReferenceExpressionImpl.java:798)
	at com.intellij.psi.impl.source.tree.CompositePsiElement.acceptChildren(CompositePsiElement.java:64)
	at net.neoforged.jst.parchment.GatherReplacementsVisitor.visitElement(GatherReplacementsVisitor.java:226)
	at com.intellij.psi.impl.source.tree.java.PsiMethodCallExpressionImpl.accept(PsiMethodCallExpressionImpl.java:125)
	at com.intellij.psi.impl.source.tree.CompositePsiElement.acceptChildren(CompositePsiElement.java:64)
	at net.neoforged.jst.parchment.GatherReplacementsVisitor.visitElement(GatherReplacementsVisitor.java:226)
	at com.intellij.psi.impl.source.tree.java.PsiReturnStatementImpl.accept(PsiReturnStatementImpl.java:88)
	at com.intellij.psi.impl.source.tree.LazyParseablePsiElement.acceptChildren(LazyParseablePsiElement.java:98)
	at net.neoforged.jst.parchment.GatherReplacementsVisitor.visitElement(GatherReplacementsVisitor.java:226)
	at com.intellij.psi.impl.source.tree.java.PsiCodeBlockImpl.accept(PsiCodeBlockImpl.java:214)
	at com.intellij.psi.impl.source.tree.SharedImplUtil.acceptChildren(SharedImplUtil.java:183)
	at com.intellij.psi.impl.source.JavaStubPsiElement.acceptChildren(JavaStubPsiElement.java:112)
	at net.neoforged.jst.parchment.GatherReplacementsVisitor.visitElement(GatherReplacementsVisitor.java:205)
	at com.intellij.psi.impl.source.PsiMethodImpl.accept(PsiMethodImpl.java:288)
	at com.intellij.psi.impl.source.tree.SharedImplUtil.acceptChildren(SharedImplUtil.java:183)
	at com.intellij.psi.impl.source.JavaStubPsiElement.acceptChildren(JavaStubPsiElement.java:112)
	at net.neoforged.jst.parchment.GatherReplacementsVisitor.visitElement(GatherReplacementsVisitor.java:226)
	at com.intellij.psi.impl.source.PsiClassImpl.accept(PsiClassImpl.java:471)
	at com.intellij.psi.impl.source.tree.SharedImplUtil.acceptChildren(SharedImplUtil.java:183)
	at com.intellij.psi.impl.source.JavaStubPsiElement.acceptChildren(JavaStubPsiElement.java:112)
	at net.neoforged.jst.parchment.GatherReplacementsVisitor.visitElement(GatherReplacementsVisitor.java:226)
	at com.intellij.psi.impl.source.PsiClassImpl.accept(PsiClassImpl.java:471)
	at com.intellij.psi.impl.source.tree.SharedImplUtil.acceptChildren(SharedImplUtil.java:183)
	at com.intellij.psi.impl.source.PsiFileImpl.acceptChildren(PsiFileImpl.java:860)
	at net.neoforged.jst.parchment.GatherReplacementsVisitor.visitElement(GatherReplacementsVisitor.java:226)
	at net.neoforged.jst.parchment.ParchmentTransformer.visitFile(ParchmentTransformer.java:68)
	at net.neoforged.jst.cli.SourceFileProcessor.transformSource(SourceFileProcessor.java:157)
	at net.neoforged.jst.cli.SourceFileProcessor.processEntry(SourceFileProcessor.java:113)
	at net.neoforged.jst.cli.SourceFileProcessor.lambda$process$1(SourceFileProcessor.java:78)
	at net.neoforged.jst.cli.OrderedParallelWorkQueue.lambda$submitAsync$0(OrderedParallelWorkQueue.java:51)
	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1789)
	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1781)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:511)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1450)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:2019)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:187)

@neoforged-pr-publishing
Copy link

  • Publish PR to GitHub Packages

@shartte shartte requested a review from Matyrobbrt December 21, 2025 12:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant