Hi, a recent PR invoked the nb-javac build of NetBeans. That workflow should check whether nb-javac is good enough to build netbeans. Turns out it is not.
See log here: https://productionresultssa18.blob.core.windows.net/actions-results/28068a0f-63f5-48b1-a166-ae2eee5c57ef/workflow-job-run-9d019235-65d7-5ef9-b11d-1745e2ca0652/logs/job/job-logs.txt?rsct=text%2Fplain&se=2026-04-22T19%3A52%3A32Z&sig=VFIun0v0phniRMb6ImiuRhJYGK%2FEWoGYjPCrkaPSTT0%3D&ske=2026-04-22T23%3A07%3A46Z&skoid=ca7593d4-ee42-46cd-af88-8b886a2f84eb&sks=b&skt=2026-04-22T19%3A07%3A46Z&sktid=398a6654-997b-47e9-b12b-9515b896b4de&skv=2025-11-05&sp=r&spr=https&sr=b&st=2026-04-22T19%3A42%3A27Z&sv=2025-11-05 Stacktrace: 2026-04-09T17:00:46.6738067Z -do-compile: 2026-04-09T17:00:46.6908408Z [nb-javac] Compiling 217 source files to /home/runner/work/netbeans/netbeans/java/java.source.base/build/classes 2026-04-09T17:00:46.6922576Z [nb-javac] Ignoring source, target and bootclasspath as release has been set 2026-04-09T17:00:47.2777146Z [repeat] /home/runner/work/netbeans/netbeans/java/java.source.base/src/org/netbeans/modules/java/source/indexing/APTUtils.java:1019: warning: Undocumented format parameter {0} prepend line: # {0} - some text, 2026-04-09T17:00:47.2779693Z [repeat] @Messages("ERR_ProcessorException=Annotation processor {0} failed with an exception: {1}") 2026-04-09T17:00:47.2780462Z [repeat] ^ 2026-04-09T17:00:47.2782400Z [repeat] /home/runner/work/netbeans/netbeans/java/java.source.base/src/org/netbeans/modules/java/source/indexing/APTUtils.java:1019: warning: Undocumented format parameter {1} prepend line: # {1} - some text, 2026-04-09T17:00:47.2784892Z [repeat] @Messages("ERR_ProcessorException=Annotation processor {0} failed with an exception: {1}") 2026-04-09T17:00:47.2785831Z [repeat] ^ 2026-04-09T17:00:47.2786221Z [repeat] 2 warnings 2026-04-09T17:00:47.2786589Z [repeat] 2026-04-09T17:00:47.2786889Z [repeat] 2026-04-09T17:00:47.2787512Z [repeat] An annotation processor threw an uncaught exception. 2026-04-09T17:00:47.2788226Z [repeat] Consult the following stack trace for details. 2026-04-09T17:00:47.2789405Z [repeat] java.lang.NullPointerException: Cannot invoke "javax.lang.model.element.ModuleElement.getClass()" because "module" is null 2026-04-09T17:00:47.2790844Z [repeat] at com.sun.tools.javac.model.JavacElements.getTypeElement(JavacElements.java:172) 2026-04-09T17:00:47.2791972Z [repeat] at com.sun.tools.javac.model.JavacElements.getTypeElement(JavacElements.java:90) 2026-04-09T17:00:47.2792879Z [repeat] at com.sun.tools.javac.processing.JavacRoundEnvironment.annotationToElement(JavacRoundEnvironment.java:274) 2026-04-09T17:00:47.2793948Z [repeat] at com.sun.tools.javac.processing.JavacRoundEnvironment.getElementsAnnotatedWith(JavacRoundEnvironment.java:237) 2026-04-09T17:00:47.2795010Z [repeat] at org.netbeans.modules.openide.util.NamedServiceProcessor.handleProcess(NamedServiceProcessor.java:153) 2026-04-09T17:00:47.2795958Z [repeat] at org.openide.util.lookup.implspi.AbstractServiceProviderProcessor.process(AbstractServiceProviderProcessor.java:103) 2026-04-09T17:00:47.2796890Z [repeat] at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:941) 2026-04-09T17:00:47.2797959Z [repeat] at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:857) 2026-04-09T17:00:47.2799205Z [repeat] at com.sun.tools.javac.processing.JavacProcessingEnvironment.access$2100(JavacProcessingEnvironment.java:111) 2026-04-09T17:00:47.2800074Z [repeat] at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1173) 2026-04-09T17:00:47.2800933Z [repeat] at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1286) 2026-04-09T17:00:47.2801697Z [repeat] at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1276) 2026-04-09T17:00:47.2802315Z [repeat] at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:952) 2026-04-09T17:00:47.2802809Z [repeat] at com.sun.tools.javac.main.Main.compile(Main.java:307) I looked into the code and to me this looks strange: https://github.com/JaroslavTulach/nb-javac/blob/263555047a69f18125d52002c4ce76bec796e2e9/make/langtools/netbeans/nb-javac/src/META-INF/upgrade/nbjavac.hint#L69-L71 causes calls to this: https://github.com/JaroslavTulach/nb-javac/blob/263555047a69f18125d52002c4ce76bec796e2e9/make/langtools/netbeans/nb-javac/src/nbjavac/ModuleWrapper.java#L47-L53 These values are obviously wrong. In our case the right module is the unnamed module and not `jdk.compiler`. What I don't get: NB targets JDK 17/21, even our conservative baseline is 8 versions beyond when `Class#getModule` was introduced. This might point to a deeper problem: We have several cases where people report strange behavior, semi random parsing/indexing errors and I see patching that makes no sense to me and is obviously not correct. Maybe at least some of the problems are caused by a broken javac implementation? The claim: "It allows to run the latest OpenJDK compiler on older JDKs - as old as JDK8 while being 1:1 identical with the official javac". Seems to me not correct. So what to do with this state? Would it make sense to change baseline to build for the oldest LTS version of Java at a given time? Greetings Matthias --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected] For further information about the NetBeans mailing lists, visit: https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists
