Skip to content

Support javac of latest JDK #446

@anthonyvdotbe

Description

@anthonyvdotbe

To reproduce:

  1. configure the extension like this:
    "jdk.advanced.disable.nbjavac": true,
    "jdk.jdkhome": "C:\\dev\\jdk-26",
    "jdk.verbose": true,

where jdk-26 is build 9

  1. open Java projects

Expected: everything works.

Actual: No suggestions. in the editor and plenty of errors in the output.

This is probably the root cause:

java.lang.IllegalStateException: java.lang.NoSuchMethodError: 'void com.sun.tools.javac.parser.JavacParser$AbstractEndPosTable.<init>(com.sun.tools.javac.parser.JavacParser)'
	at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.parse(JavacTaskImpl.java:252)
	at org.netbeans.modules.java.source.parsing.JavacParser.moveToPhase(JavacParser.java:661)
	at org.netbeans.modules.java.source.parsing.CompilationInfoImpl.toPhase(CompilationInfoImpl.java:426)
	at org.netbeans.api.java.source.CompilationController.toPhase(CompilationController.java:90)
	at org.netbeans.modules.java.source.JavaSourceUtilImpl$1.parseModule(JavaSourceUtilImpl.java:304)
	at org.netbeans.modules.java.preprocessorbridge.api.ModuleUtilities.parseModule(ModuleUtilities.java:80)
	at org.netbeans.modules.java.api.common.classpath.ModuleClassPaths$ModuleInfoClassPathImplementation.getResources(ModuleClassPaths.java:844)
	at org.netbeans.api.java.classpath.ClassPath.entries(ClassPath.java:363)
	at org.netbeans.spi.java.classpath.support.MuxClassPathImplementation.getResources(MuxClassPathImplementation.java:90)
	at org.netbeans.api.java.classpath.ClassPath.entries(ClassPath.java:363)
	at org.netbeans.api.java.classpath.ClassPath.toString(ClassPath.java:769)
	at org.netbeans.api.java.classpath.ClassPath.toString(ClassPath.java:838)
	at org.netbeans.api.java.classpath.ClassPath.toString(ClassPath.java:848)
	at org.netbeans.modules.parsing.impl.indexing.LogContext.addPaths(LogContext.java:892)
	at org.netbeans.modules.parsing.impl.indexing.PathRegistry.scheduleFirer(PathRegistry.java:943)
	at org.netbeans.modules.parsing.impl.indexing.PathRegistry.resetCacheAndFire(PathRegistry.java:931)
	at org.netbeans.modules.parsing.impl.indexing.PathRegistry.access$500(PathRegistry.java:68)
	at org.netbeans.modules.parsing.impl.indexing.PathRegistry$Listener.pathsAdded(PathRegistry.java:1206)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
	at java.base/java.lang.reflect.Method.invoke(Method.java:565)
	at org.openide.util.WeakListenerImpl$ProxyListener.invoke(WeakListenerImpl.java:461)
	at jdk.proxy3/jdk.proxy3.$Proxy4.pathsAdded(Unknown Source)
	at org.netbeans.api.java.classpath.GlobalPathRegistry.register(GlobalPathRegistry.java:206)
	at org.netbeans.modules.maven.ProjectOpenedHookImpl.projectOpened(ProjectOpenedHookImpl.java:155)
	at org.netbeans.spi.project.ui.ProjectOpenedHook$1.projectOpened(ProjectOpenedHook.java:60)
	at org.netbeans.modules.project.ui.OpenProjectList.notifyOpened(OpenProjectList.java:1317)
	at org.netbeans.modules.project.ui.OpenProjectList.doOpenProject(OpenProjectList.java:1399)
	at org.netbeans.modules.project.ui.OpenProjectList.open(OpenProjectList.java:845)
	at org.netbeans.modules.project.ui.OpenProjectList.open(OpenProjectList.java:679)
	at org.netbeans.modules.project.ui.OpenProjectList.open(OpenProjectList.java:640)
	at org.netbeans.modules.project.ui.OpenProjectsTrampolineImpl.openAPI(OpenProjectsTrampolineImpl.java:56)
	at org.netbeans.api.project.ui.OpenProjects.open(OpenProjects.java:173)
	at org.netbeans.modules.java.lsp.server.protocol.Server$LanguageServerImpl.lambda$asyncOpenSelectedProjects1$11(Server.java:753)
	at org.netbeans.modules.java.lsp.server.protocol.Server$LanguageServerImpl.lambda$asyncOpenSelectedProjects1$9(Server.java:802)
	at java.base/java.util.concurrent.CompletableFuture.uniRunNow(CompletableFuture.java:840)
	at java.base/java.util.concurrent.CompletableFuture.uniRunStage(CompletableFuture.java:824)
	at java.base/java.util.concurrent.CompletableFuture.thenRun(CompletableFuture.java:2254)
	at org.netbeans.modules.java.lsp.server.protocol.Server$LanguageServerImpl.lambda$asyncOpenSelectedProjects1$11(Server.java:801)
	at org.netbeans.modules.java.lsp.server.protocol.Server$LanguageServerImpl.lambda$asyncOpenSelectedProjects1$12(Server.java:812)
	at java.base/java.util.concurrent.CompletableFuture.uniRunNow(CompletableFuture.java:840)
	at java.base/java.util.concurrent.CompletableFuture.uniRunStage(CompletableFuture.java:824)
	at java.base/java.util.concurrent.CompletableFuture.thenRun(CompletableFuture.java:2254)
	at org.netbeans.modules.java.lsp.server.protocol.Server$LanguageServerImpl.asyncOpenSelectedProjects1(Server.java:811)
	at org.netbeans.modules.java.lsp.server.protocol.Server$LanguageServerImpl.asyncOpenSelectedProjects0(Server.java:666)
	at org.netbeans.modules.java.lsp.server.protocol.Server$LanguageServerImpl.lambda$initialize$18(Server.java:1010)
	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)
Caused by: java.lang.NoSuchMethodError: 'void com.sun.tools.javac.parser.JavacParser$AbstractEndPosTable.<init>(com.sun.tools.javac.parser.JavacParser)'
	at org.netbeans.lib.nbjavac.services.NBParserFactory$NBJavacParser$EndPosTableImpl.<init>(NBParserFactory.java:172)
	at org.netbeans.lib.nbjavac.services.NBParserFactory$NBJavacParser$EndPosTableImpl.<init>(NBParserFactory.java:166)
	at org.netbeans.lib.nbjavac.services.NBParserFactory$NBJavacParser.newEndPosTable(NBParserFactory.java:106)
	at jdk.compiler/com.sun.tools.javac.parser.JavacParser.<init>(JavacParser.java:200)
	at org.netbeans.lib.nbjavac.services.NBParserFactory$NBJavacParser.<init>(NBParserFactory.java:82)
	at org.netbeans.lib.nbjavac.services.NBParserFactory.newParser(NBParserFactory.java:73)
	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:638)
	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:617)
	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:677)
	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.parseFiles(JavaCompiler.java:1023)
	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler$InitialFileParser.parse(JavaCompiler.java:2019)
	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.parseFiles(JavaCompiler.java:1010)
	at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.parseInternal(JavacTaskImpl.java:258)
	at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.invocationHelper(JavacTaskImpl.java:152)
	at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.parse(JavacTaskImpl.java:248)
	... 48 more

Another error:

java.lang.IllegalStateException: Cannot call getCompilationUnit() if current phase < JavaSource.Phase.PARSED. You must call toPhase(Phase.PARSED) first.
	at org.netbeans.modules.java.source.parsing.CompilationInfoImpl.getCompilationUnit(CompilationInfoImpl.java:242)
	at org.netbeans.api.java.source.CompilationInfo.getCompilationUnit(CompilationInfo.java:167)
	at org.netbeans.modules.java.editor.base.semantic.MarkOccurrencesHighlighterBase.processImpl(MarkOccurrencesHighlighterBase.java:131)
	at org.netbeans.modules.java.lsp.server.protocol.TextDocumentServiceImpl$1MOHighligther.processImpl(TextDocumentServiceImpl.java:973)
	at org.netbeans.modules.java.lsp.server.protocol.TextDocumentServiceImpl.lambda$documentHighlight$23(TextDocumentServiceImpl.java:991)
	at org.netbeans.api.java.source.JavaSource$MultiTask.run(JavaSource.java:504)
	at org.netbeans.modules.parsing.impl.TaskProcessor.callUserTask(TaskProcessor.java:586)
	at org.netbeans.modules.parsing.api.ParserManager$UserTaskAction.run(ParserManager.java:197)
	at org.netbeans.modules.parsing.api.ParserManager$UserTaskAction.run(ParserManager.java:180)
	at org.netbeans.modules.parsing.impl.TaskProcessor$2.call(TaskProcessor.java:181)
	at org.netbeans.modules.parsing.impl.TaskProcessor$2.call(TaskProcessor.java:178)
	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.TaskProcessor.runUserTask(TaskProcessor.java:178)
	at org.netbeans.modules.parsing.api.ParserManager.parse(ParserManager.java:83)
	at org.netbeans.api.java.source.JavaSource.runUserActionTaskImpl(JavaSource.java:454)
	at org.netbeans.api.java.source.JavaSource.runUserActionTask(JavaSource.java:425)
	at org.netbeans.modules.java.lsp.server.protocol.TextDocumentServiceImpl.documentHighlight(TextDocumentServiceImpl.java:985)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)

There's also:

WARNING [org.netbeans.modules.java.source.parsing.JavacParser]: Dump could not be written. Either dump file could not be created or all dump files were already used. Please check that you have write permission to 'var/log' and clean all *.dump files in that directory.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingtriage

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions