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



Reply via email to