apache / apache/netbeans

exception while background scanning of projects

Open
#7,962 1 comment 0 reactions 0 assignees View on GitHub
Java kind:bug nb-javac needs:triage
Dominant language
Java
Stars
3.1k
Forks
935
Avg merge
2d 3h
Merged PRs (30d)
17

Description

### Apache NetBeans version

Apache NetBeans 23

### What happened

This happens I think while **background scanning projects**. Then multiple classes are shown not found in the editor but a maven build succeeds. BTW this is a multi module java maven project compiling with java 17. The IDE runs on Java 21.

```
java.lang.NullPointerException: Cannot invoke "com.sun.tools.javac.code.Type.isPrimitive()" because "t" is null
at com.sun.tools.javac.code.Types.eraseNotNeeded(Types.java:2397)
at com.sun.tools.javac.code.Types.erasure(Types.java:2390)
at com.sun.tools.javac.code.Symbol$ClassSymbol.erasure(Symbol.java:1394)
at com.sun.tools.javac.comp.TransTypes.visitIdent(TransTypes.java:820)
at com.sun.tools.javac.tree.JCTree$JCIdent.accept(JCTree.java:2704)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.TransTypes.translate(TransTypes.java:443)
at com.sun.tools.javac.comp.TransTypes.visitMethodDef(TransTypes.java:473)
at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:957)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
at com.sun.tools.javac.tree.TreeTranslator.visitClassDef(TreeTranslator.java:144)
at com.sun.tools.javac.comp.TransTypes.translateClass(TransTypes.java:961)
at com.sun.tools.javac.comp.TransTypes.visitClassDef(TransTypes.java:464)
at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:855)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.TransTypes.translate(TransTypes.java:443)
at com.sun.tools.javac.comp.TransTypes.visitNewClass(TransTypes.java:712)
at com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1912)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.TransTypes.translate(TransTypes.java:443)
at com.sun.tools.javac.comp.TransTypes.visitExec(TransTypes.java:630)
at com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1644)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
at com.sun.tools.javac.tree.TreeTranslator.visitBlock(TreeTranslator.java:172)
at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1133)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.TransTypes.translate(TransTypes.java:443)
at com.sun.tools.javac.comp.TransTypes.visitMethodDef(TransTypes.java:478)
at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:957)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
at com.sun.tools.javac.tree.TreeTranslator.visitClassDef(TreeTranslator.java:144)
at com.sun.tools.javac.comp.TransTypes.translateClass(TransTypes.java:961)
at com.sun.tools.javac.comp.TransTypes.visitClassDef(TransTypes.java:464)
at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:855)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.TransTypes.translate(TransTypes.java:443)
at com.sun.tools.javac.comp.TransTypes.visitNewClass(TransTypes.java:712)
at com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1912)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.TransTypes.translate(TransTypes.java:443)
at com.sun.tools.javac.comp.TransTypes.translateArgs(TransTypes.java:201)
at com.sun.tools.javac.comp.TransTypes.visitApply(TransTypes.java:682)
at com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1857)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.TransTypes.translate(TransTypes.java:443)
at com.sun.tools.javac.comp.TransTypes.visitExec(TransTypes.java:630)
at com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1644)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
at com.sun.tools.javac.tree.TreeTranslator.visitBlock(TreeTranslator.java:172)
at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1133)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.TransTypes.translate(TransTypes.java:443)
at com.sun.tools.javac.comp.TransTypes.visitMethodDef(TransTypes.java:478)
at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:957)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
at com.sun.tools.javac.tree.TreeTranslator.visitClassDef(TreeTranslator.java:144)
at com.sun.tools.javac.comp.TransTypes.translateClass(TransTypes.java:961)
at com.sun.tools.javac.comp.TransTypes.visitClassDef(TransTypes.java:464)
at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:855)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.TransTypes.translate(TransTypes.java:443)
at com.sun.tools.javac.comp.TransTypes.translateTopLevelClass(TransTypes.java:983)
at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1609)
at org.netbeans.lib.nbjavac.services.NBJavaCompiler.desugar(NBJavaCompiler.java:89)
at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1464)
at com.sun.tools.javac.api.JavacTaskImpl$2.process(JavacTaskImpl.java:475)
at com.sun.tools.javac.api.JavacTaskImpl$Filter.run(JavacTaskImpl.java:519)
at com.sun.tools.javac.api.JavacTaskImpl.generate(JavacTaskImpl.java:478)
at org.netbeans.modules.java.source.indexing.VanillaCompileWorker.lambda$compile$3(VanillaCompileWorker.java:371)
at org.netbeans.modules.java.source.parsing.FileManagerTransaction.runConcurrent(FileManagerTransaction.java:180)
[catch] at org.netbeans.modules.java.source.indexing.VanillaCompileWorker.compile(VanillaCompileWorker.java:360)
at org.netbeans.modules.java.source.indexing.JavaCustomIndexer.index(JavaCustomIndexer.java:360)
at org.netbeans.modules.parsing.spi.indexing.Indexable$MyAccessor$2.run(Indexable.java:138)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater.runIndexer(RepositoryUpdater.java:274)
at org.netbeans.modules.parsing.spi.indexing.Indexable$MyAccessor.index(Indexable.java:136)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.doIndex(RepositoryUpdater.java:2749)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.lambda$index$0(RepositoryUpdater.java:2626)
at org.netbeans.modules.parsing.impl.indexing.errors.TaskCache.refreshTransaction(TaskCache.java:540)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.index(RepositoryUpdater.java:2625)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$AbstractRootsWork.lambda$scanSource$3(RepositoryUpdater.java:5735)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater.lambda$runInContext$4(RepositoryUpdater.java:2119)
at org.openide.util.lookup.Lookups.executeWith(Lookups.java:288)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater.runInContext(RepositoryUpdater.java:2117)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater.runInContext(RepositoryUpdater.java:2098)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater.access$1400(RepositoryUpdater.java:135)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$AbstractRootsWork.scanSource(RepositoryUpdater.java:5770)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$AbstractRootsWork.scanSources(RepositoryUpdater.java:5443)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$RootsWork.getDone(RepositoryUpdater.java:5075)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.doTheWork(RepositoryUpdater.java:3452)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task._run(RepositoryUpdater.java:6197)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task.access$3400(RepositoryUpdater.java:5855)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task$2.lambda$call$0(RepositoryUpdater.java:6116)
at org.openide.util.lookup.Lookups.executeWith(Lookups.java:288)
at org.netbeans.modules.parsing.impl.RunWhenScanFinishedSupport.performScan(RunWhenScanFinishedSupport.java:83)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task$2.call(RepositoryUpdater.java:6116)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task$2.call(RepositoryUpdater.java:6112)
at org.netbeans.modules.masterfs.filebasedfs.utils.FileChangedManager.priorityIO(FileChangedManager.java:153)
at org.netbeans.modules.masterfs.providers.ProvidedExtensions.priorityIO(ProvidedExtensions.java:335)
at org.netbeans.modules.parsing.nb.DataObjectEnvFactory.runPriorityIO(DataObjectEnvFactory.java:118)
at org.netbeans.modules.parsing.impl.Utilities.runPriorityIO(Utilities.java:67)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task.run(RepositoryUpdater.java:6112)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1403)
at org.netbeans.modules.openide.util.GlobalLookup.execute(GlobalLookup.java:45)
at org.openide.util.lookup.Lookups.executeWith(Lookups.java:287)
at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2018)
```

### Language / Project Type / NetBeans Component

Java Maven Project (multi module)

### How to reproduce

no idea, happens sometimes after netbeans start or branch switching, but which source code part this triggers I have no idea

### Did this work correctly in an earlier version?

No / Don't know

### Operating System

Windows 11

### JDK

21.0.4; OpenJDK 64-Bit Server VM 21.0.4+7-LTS (IDE)

### Apache NetBeans packaging

Apache NetBeans provided installer

### Anything else

_No response_

### Are you willing to submit a pull request?

No

Contributor guide

Open the contributing guide

Research direction

Start with the stack-trace entry points in org.netbeans.modules.java.source.indexing.VanillaCompileWorker and JavaCustomIndexer, then trace the call into org.netbeans.lib.nbjavac.services.NBJavaCompiler during project indexing. Reproduction is not provided, so first identify a triggering project or branch-switch sequence; done means background scanning no longer throws the reported NullPointerException and editor indexing remains correct.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
devtools
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.