Skip to content

Support for Java 25 #190

Description

@cicirello

There is currently an open issue requesting support for Java 23 (#104 ). My request is much like that one, but for Java 25. The result of running on a Java 25 project is much like the output seen in Issue #104. Since Java 23 is halfway between LTS Java versions (21 and 25), I'm assuming that the fix is likely the same for the existing issue #104 and this new one. But, just in case the underlying issue for Java 25 is distinct from that of Java 23, I'm submitting this issue.

Activity

  1. jimbethancourt commented on Jul 1, 2026

    @jimbethancourt
    Collaborator

    Hi @cicirello - thanks so much for your kind and thoughtful request for Java 25 support! I've looked into it and I'll start work on it as soon as I cut a release for the work I'm wrapping up now. I did look into it briefly and it got complicated quickly - I was getting ajava.lang.ExceptionInInitializerError: com.sun.tools.javac.code.TypeTag :: UNKNOWN error. Granted, I was trying to target a Java 11 runtime and trying to include the OpenRewrite Java 25 parser, which may be causing the issue.

    I plan to re-platform on Java 17 after I cut the release and update all of the dependencies to versions that work with Java 17 instead of Java 11, so hopefully the TypeTag issue will go away when I do that upgrade. 🤞 Re-platforming on Java 17 will enable JGit worktree support, which means that LLMs can run RefactorFirst in separate worktrees once I get the CLI command and/or a Maven goal that writes to STDOUT.

    If you have a minute, please clone what's in main and build it and try it out locally - I'd love your feedback. Thanks!

  2. cicirello commented on Jul 2, 2026

    @cicirello
    Author

    Hi @jimbethancourt - I tried building the main branch locally, but the build fails on my machine. In case it is helpful to you, here's first some information about my machine, such as OS, Java version, Maven version, etc (via mvn -v):

    Apache Maven 3.9.16 (2bdd9fddda4b155ebf8000e807eb73fd829a51d5)
    Maven home: C:\tools\apache-maven-3.9.16
    Java version: 25.0.3, vendor: Eclipse Adoptium, runtime: C:\Program Files\Eclipse Adoptium\jdk-25.0.3.9-hotspot
    Default locale: en_US, platform encoding: UTF-8
    OS name: "windows 11", version: "10.0", arch: "amd64", family: "windows"
    

    Now, here's some of the build output (parts of output that appears most relevant to whatever the issue is in building on my machine):

    [INFO] --- spotless:2.44.5:apply (default) @ codebase-graph-builder ---
    [INFO] Index file does not exist. Fallback to an empty index
    WARNING: A terminally deprecated method in sun.misc.Unsafe has been called
    WARNING: sun.misc.Unsafe::staticFieldBase has been called by com.diffplug.spotless.java.ModuleHelper (file:/C:/Users/REDACTED/.m2/repository/com/diffplug/spotless/spotless-lib/3.1.2/spotless-lib-3.1.2.jar)
    WARNING: Please consider reporting this to the maintainers of class com.diffplug.spotless.java.ModuleHelper
    WARNING: sun.misc.Unsafe::staticFieldBase will be removed in a future release
    [ERROR] Step 'palantir-java-format' found problem in 'CodebaseGraphDTO.java':
    'java.util.Queue com.sun.tools.javac.util.Log$DeferredDiagnosticHandler.getDiagnostics()'
    java.lang.NoSuchMethodError: 'java.util.Queue com.sun.tools.javac.util.Log$DeferredDiagnosticHandler.getDiagnostics()'
        at com.palantir.javaformat.java.JavaInput.buildToks (JavaInput.java:368)
        at com.palantir.javaformat.java.ImportOrderer.reorderImports (ImportOrderer.java:49)
        at com.diffplug.spotless.glue.pjf.PalantirJavaFormatFormatterFunc.apply (PalantirJavaFormatFormatterFunc.java:53)
        at com.diffplug.spotless.FormatterFunc.apply (FormatterFunc.java:33)
        at com.diffplug.spotless.FormatterStepEqualityOnStateSerialization.format (FormatterStepEqualityOnStateSerialization.java:49)
        at com.diffplug.spotless.Formatter.computeWithLint (Formatter.java:170)
        at com.diffplug.spotless.DirtyState.of (DirtyState.java:97)
        at com.diffplug.spotless.DirtyState.of (DirtyState.java:82)
        at com.diffplug.spotless.DirtyState.of (DirtyState.java:77)
        at com.diffplug.spotless.DirtyState.of (DirtyState.java:73)
        at com.diffplug.spotless.maven.SpotlessApplyMojo.process (SpotlessApplyMojo.java:63)
        at com.diffplug.spotless.maven.AbstractSpotlessMojo.execute (AbstractSpotlessMojo.java:255)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)
        at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328)
        at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
        at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
        at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
        at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
        at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
        at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
        at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
        at org.apache.maven.cli.MavenCli.execute (MavenCli.java:919)
        at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:285)
        at org.apache.maven.cli.MavenCli.main (MavenCli.java:207)
        at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:104)
        at java.lang.reflect.Method.invoke (Method.java:565)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:255)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:201)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:362)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:314)
    [INFO] ------------------------------------------------------------------------
    [INFO] Reactor Summary for RefactorFirst 0.8.1-SNAPSHOT:
    [INFO]
    [INFO] RefactorFirst ...................................... SUCCESS [  0.618 s]
    [INFO] RefactorFirst Test Resources ....................... SUCCESS [  0.772 s]
    [INFO] RefactorFirst Codebase Graph Builder ............... FAILURE [  0.423 s]
    [INFO] RefactorFirst Graph Algorithms ..................... SKIPPED
    [INFO] RefactorFirst Change Proneness Ranker .............. SKIPPED
    [INFO] RefactorFirst Effort Ranker ........................ SKIPPED
    [INFO] RefactorFirst Cost Benefit Calculator .............. SKIPPED
    [INFO] RefactorFirst Graph Data Generator ................. SKIPPED
    [INFO] RefactorFirst Report ............................... SKIPPED
    [INFO] RefactorFirst Maven Plugin ......................... SKIPPED
    [INFO] coverage ........................................... SKIPPED
    [INFO] RefactorFirst CLI .................................. SKIPPED
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  1.953 s
    [INFO] Finished at: 2026-07-02T13:56:48-04:00
    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal com.diffplug.spotless:spotless-maven-plugin:2.44.5:apply (default) on project codebase-graph-builder: Execution default of goal com.diffplug.spotless:spotless-maven-plugin:2.44.5:apply failed: An API incompatibility was encountered while executing com.diffplug.spotless:spotless-maven-plugin:2.44.5:apply: java.lang.NoSuchMethodError: 'java.util.Queue com.sun.tools.javac.util.Log$DeferredDiagnosticHandler.getDiagnostics()'
    [ERROR] -----------------------------------------------------
    [ERROR] realm =    plugin>com.diffplug.spotless:spotless-maven-plugin:2.44.5
    [ERROR] strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
    [ERROR] urls[0] = file:/C:/Users/REDACTED/.m2/repository/com/diffplug/spotless/spotless-maven-plugin/2.44.5/spotless-maven-plugin-2.44.5.jar
    [ERROR] urls[1] = file:/C:/Users/REDACTED/.m2/repository/com/diffplug/spotless/spotless-lib/3.1.2/spotless-lib-3.1.2.jar
    [ERROR] urls[2] = file:/C:/Users/REDACTED/.m2/repository/com/diffplug/spotless/spotless-lib-extra/3.1.2/spotless-lib-extra-3.1.2.jar
    [ERROR] urls[3] = file:/C:/Users/REDACTED/.m2/repository/com/googlecode/concurrent-trees/concurrent-trees/2.6.1/concurrent-trees-2.6.1.jar
    [ERROR] urls[4] = file:/C:/Users/REDACTED/.m2/repository/dev/equo/ide/solstice/1.8.1/solstice-1.8.1.jar
    [ERROR] urls[5] = file:/C:/Users/REDACTED/.m2/repository/com/diffplug/durian/durian-swt.os/4.3.0/durian-swt.os-4.3.0.jar
    [ERROR] urls[6] = file:/C:/Users/REDACTED/.m2/repository/org/tukaani/xz/1.9/xz-1.9.jar
    [ERROR] urls[7] = file:/C:/Users/REDACTED/.m2/repository/com/squareup/okhttp3/okhttp/4.12.0/okhttp-4.12.0.jar
    [ERROR] urls[8] = file:/C:/Users/REDACTED/.m2/repository/com/squareup/okio/okio/3.6.0/okio-3.6.0.jar
    [ERROR] urls[9] = file:/C:/Users/REDACTED/.m2/repository/com/squareup/okio/okio-jvm/3.6.0/okio-jvm-3.6.0.jar
    [ERROR] urls[10] = file:/C:/Users/REDACTED/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.10/kotlin-stdlib-common-1.9.10.jar
    [ERROR] urls[11] = file:/C:/Users/REDACTED/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.21/kotlin-stdlib-jdk8-1.8.21.jar
    [ERROR] urls[12] = file:/C:/Users/REDACTED/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib/1.8.21/kotlin-stdlib-1.8.21.jar
    [ERROR] urls[13] = file:/C:/Users/REDACTED/.m2/repository/org/jetbrains/annotations/13.0/annotations-13.0.jar
    [ERROR] urls[14] = file:/C:/Users/REDACTED/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.21/kotlin-stdlib-jdk7-1.8.21.jar
    [ERROR] urls[15] = file:/C:/Users/REDACTED/.m2/repository/org/eclipse/platform/org.eclipse.osgi/3.23.0/org.eclipse.osgi-3.23.0.jar
    [ERROR] urls[16] = file:/C:/Users/REDACTED/.m2/repository/com/diffplug/durian/durian-core/1.2.0/durian-core-1.2.0.jar
    [ERROR] urls[17] = file:/C:/Users/REDACTED/.m2/repository/com/diffplug/durian/durian-io/1.2.0/durian-io-1.2.0.jar
    [ERROR] urls[18] = file:/C:/Users/REDACTED/.m2/repository/com/diffplug/durian/durian-collect/1.2.0/durian-collect-1.2.0.jar
    [ERROR] urls[19] = file:/C:/Users/REDACTED/.m2/repository/org/codehaus/plexus/plexus-resources/1.3.0/plexus-resources-1.3.0.jar
    [ERROR] urls[20] = file:/C:/Users/REDACTED/.m2/repository/org/codehaus/plexus/plexus-utils/4.0.0/plexus-utils-4.0.0.jar
    [ERROR] urls[21] = file:/C:/Users/REDACTED/.m2/repository/org/codehaus/plexus/plexus-xml/3.0.0/plexus-xml-3.0.0.jar
    [ERROR] urls[22] = file:/C:/Users/REDACTED/.m2/repository/org/eclipse/jgit/org.eclipse.jgit/6.10.1.202505221210-r/org.eclipse.jgit-6.10.1.202505221210-r.jar
    [ERROR] urls[23] = file:/C:/Users/REDACTED/.m2/repository/com/googlecode/javaewah/JavaEWAH/1.2.3/JavaEWAH-1.2.3.jar
    [ERROR] urls[24] = file:/C:/Users/REDACTED/.m2/repository/commons-codec/commons-codec/1.17.0/commons-codec-1.17.0.jar
    [ERROR] urls[25] = file:/C:/Users/REDACTED/.m2/repository/org/sonatype/plexus/plexus-build-api/0.0.7/plexus-build-api-0.0.7.jar
    [ERROR] Number of foreign imports: 1
    [ERROR] import: Entry[import  from realm ClassRealm[maven.api, parent: null]]
    [ERROR]
    [ERROR] -----------------------------------------------------
    
  3. jimbethancourt commented on Jul 2, 2026

    @jimbethancourt
    Collaborator

    Thanks for the stacktrace! It will compile with Java 25 if you update Lombok to <lombok.version>1.18.46</lombok.version> on line 59 and comment out the Spotless plugin on lines 406-439 in the parent pom

  4. jimbethancourt commented on Jul 2, 2026

    @jimbethancourt
    Collaborator

    Nevermind - looks like tests are failing with Java 25 ☹️

  5. jimbethancourt commented on Jul 3, 2026

    @jimbethancourt
    Collaborator

    Good news @cicirello - I've been able to build what's currently in the main branch with Java 11 and then run it against Chips-n-Salsa using Java 25 and it successfully analyzed the project. I've attached the report to this issue - the link is below (it looks like it will download to the default browser download folder) I'd love your feedback!

    refactor-first-report.html

  6. cicirello commented on Jul 3, 2026

    @cicirello
    Author

    @jimbethancourt I'll try to check it out later today.

  7. jimbethancourt commented on Jul 3, 2026

    @jimbethancourt
    Collaborator

    @cicirello I've released version 0.9.0 this morning. You should be able to run in on your projects with a Java 25 runtime. You can use this command to run it:
    org.hjug.refactorfirst.plugin:refactor-first-maven-plugin:0.9.0:htmlReport

  8. cicirello commented on Jul 3, 2026

    @cicirello
    Author

    @jimbethancourt I tried it in one of my projects that is using Java 25, and it works fine.

  9. cicirello commented on Jul 6, 2026

    @cicirello
    Author

    @jimbethancourt it definitely works fine in one of my projects that is using Java 25. But, in another, it doesn't. I have the start of a stack trace below. I think it is likely still Java 25 related as part of the stack trace lists classes from openrewrite that have Java21 within the classnames.

    This stack trace was from building https://github.com/cicirello/core. I have Maven configured to run RefactorFirst in a profile. To enable during the build: mvn clean package -P analysis .

    Here's the start of the stack trace. The full output is a couple thousand lines long, but is mostly similar to this part just for other source files:

    [INFO] --- refactor-first:0.9.0:report (refactor-first) @ core ---
    [INFO] Rendering content with org.apache.maven.skins:maven-fluido-skin:jar:2.0.0-M9 skin
    [INFO] Project Base Dir: C:\Users\vacic\Documents\GitHub\core
    [INFO] Parent of Git Dir: C:\Users\vacic\Documents\GitHub\core
    [INFO] Analyzing Cycles
    org.openrewrite.java.JavaParsingException: Failed to convert for the following cursor stack:--- BEGIN PATH ---
    JCCompilationUnit(sourceFile = C:\Users\vacic\Documents\GitHub\core\src\main\java\org\cicirello\ds\BinaryHeap.java)
    JCClassDecl(name = BinaryHeap, line = 81)
    --- END PATH ---
    
            at org.openrewrite.java.isolated.ReloadableJava21ParserVisitor.reportJavaParsingException(ReloadableJava21ParserVisitor.java:1923)
            at org.openrewrite.java.isolated.ReloadableJava21ParserVisitor.convert(ReloadableJava21ParserVisitor.java:1890)
            at org.openrewrite.java.isolated.ReloadableJava21ParserVisitor.convert(ReloadableJava21ParserVisitor.java:1936)
            at org.openrewrite.java.isolated.ReloadableJava21ParserVisitor.convert(ReloadableJava21ParserVisitor.java:1928)
            at org.openrewrite.java.isolated.ReloadableJava21ParserVisitor.convertStatements(ReloadableJava21ParserVisitor.java:2115)
            at org.openrewrite.java.isolated.ReloadableJava21ParserVisitor.convertStatements(ReloadableJava21ParserVisitor.java:2077)
            at org.openrewrite.java.isolated.ReloadableJava21ParserVisitor.visitClass(ReloadableJava21ParserVisitor.java:597)
            at org.openrewrite.java.isolated.ReloadableJava21ParserVisitor.visitClass(ReloadableJava21ParserVisitor.java:79)
            at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:899)
            at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:92)
            at org.openrewrite.java.isolated.ReloadableJava21ParserVisitor.convert(ReloadableJava21ParserVisitor.java:1884)
            at org.openrewrite.java.isolated.ReloadableJava21ParserVisitor.convertAll(ReloadableJava21ParserVisitor.java:1983)
            at org.openrewrite.java.isolated.ReloadableJava21ParserVisitor.visitCompilationUnit(ReloadableJava21ParserVisitor.java:650)
            at org.openrewrite.java.isolated.ReloadableJava21ParserVisitor.visitCompilationUnit(ReloadableJava21ParserVisitor.java:79)
            at com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:627)
            at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:92)
            at org.openrewrite.java.isolated.ReloadableJava21Parser.lambda$parseInputs$1(ReloadableJava21Parser.java:194)
            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 org.hjug.graphbuilder.JavaGraphBuilder.processWithOpenRewrite(JavaGraphBuilder.java:95)
            at org.hjug.graphbuilder.JavaGraphBuilder.getCodebaseGraphDTO(JavaGraphBuilder.java:59)
            at org.hjug.graphbuilder.JavaGraphBuilder.getCodebaseGraphDTO(JavaGraphBuilder.java:44)
            at org.hjug.cbc.CycleRanker.generateClassReferencesGraph(CycleRanker.java:29)
            at org.hjug.refactorfirst.report.SimpleHtmlReport.generateReport(SimpleHtmlReport.java:179)
            at org.hjug.mavenreport.RefactorFirstMavenReport.executeReport(RefactorFirstMavenReport.java:75)
            at org.apache.maven.reporting.AbstractMavenReport.generate(AbstractMavenReport.java:358)
            at org.apache.maven.reporting.AbstractMavenReport.reportToSite(AbstractMavenReport.java:266)
            at org.apache.maven.reporting.AbstractMavenReport.execute(AbstractMavenReport.java:212)
            at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:126)
            at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2(MojoExecutor.java:328)
            at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute(MojoExecutor.java:316)
            at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
            at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:174)
            at org.apache.maven.lifecycle.internal.MojoExecutor.access$000(MojoExecutor.java:75)
            at org.apache.maven.lifecycle.internal.MojoExecutor$1.run(MojoExecutor.java:162)
            at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute(DefaultMojosExecutionStrategy.java:39)
            at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:159)
            at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:105)
            at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:73)
            at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:53)
            at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:118)
            at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:261)
            at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:173)
            at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:101)
            at org.apache.maven.cli.MavenCli.execute(MavenCli.java:919)
            at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:285)
            at org.apache.maven.cli.MavenCli.main(MavenCli.java:207)
            at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
            at java.base/java.lang.reflect.Method.invoke(Method.java:565)
            at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:255)
            at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:201)
            at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:362)
            at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:314)
    Caused by: java.lang.IllegalStateException: Expected to be able to find @exception
            at org.openrewrite.java.isolated.ReloadableJava21JavadocVisitor.sourceBefore(ReloadableJava21JavadocVisitor.java:1127)
            at org.openrewrite.java.isolated.ReloadableJava21JavadocVisitor.visitThrows(ReloadableJava21JavadocVisitor.java:1049)
            at org.openrewrite.java.isolated.ReloadableJava21JavadocVisitor.visitThrows(ReloadableJava21JavadocVisitor.java:57)
            at com.sun.tools.javac.tree.DCTree$DCThrows.accept(DCTree.java:1331)
            at com.sun.source.util.DocTreeScanner.scan(DocTreeScanner.java:90)
            at org.openrewrite.java.isolated.ReloadableJava21JavadocVisitor.convertMultiline(ReloadableJava21JavadocVisitor.java:1227)
            at org.openrewrite.java.isolated.ReloadableJava21JavadocVisitor.visitDocComment(ReloadableJava21JavadocVisitor.java:347)
            at org.openrewrite.java.isolated.ReloadableJava21JavadocVisitor.visitDocComment(ReloadableJava21JavadocVisitor.java:57)
            at com.sun.tools.javac.tree.DCTree$DCDocComment.accept(DCTree.java:363)
            at com.sun.source.util.DocTreeScanner.scan(DocTreeScanner.java:90)
            at org.openrewrite.java.isolated.ReloadableJava21ParserVisitor.formatWithCommentTree(ReloadableJava21ParserVisitor.java:2568)
            at org.openrewrite.java.isolated.ReloadableJava21ParserVisitor.convert(ReloadableJava21ParserVisitor.java:1884)
            ... 58 more
    
  10. jimbethancourt commented on Sep 22, 2026

    @jimbethancourt
    Collaborator

    I realized that the issue you ran into with building with Java 25 is due to the fact that the version of Spotless hasn't been updated in a while. I've updated it in the branch I'm adding Java 25 support on.

  11. added 3 commits that reference this issue on Sep 22, 2026
  12. jimbethancourt commented on Sep 23, 2026

    @jimbethancourt
    Collaborator

    Hi @cicirello I've added support for Java 25 in PR #218 and merged it into main. I'd like to add Gradle support before performing a release, but hopefully that won't take too long.

    In the meantime, I'd love it if you can pull main and build on a Java 25 JDK and then run it against https://github.com/cicirello/core using a Java 25 runtime and let me know if it works as expected. It looks like the exception you were seeing in #190 (comment) may have been a bug in the OpenRewrite parser, as I've updated the parser version and it didn't happen, even when I analyzed the core repo using a Java 17 runtime that didn't activate the Java 25 parser.

    Thank you so much!

  13. cicirello commented on Sep 23, 2026

    @cicirello
    Author

    @jimbethancourt I'll find time to try it out later this week

  14. added a commit that references this issue on Sep 30, 2026
  15. cicirello commented on Sep 30, 2026

    @cicirello
    Author

    @jimbethancourt I just tried the version currently in main. It works well. There is a warning, but I think it is unrelated, and I think it is actually being generated by one of your dependencies, as the text of the warning suggests reporting it to the maintainers of a class that is likely in a dependency and not in RefactorFirst itself. The warning is just after the line that indicates it is "walking 0 Kotlin files", so it appears to be Kotlin related. I don't have any Kotlin in this project, so I have no idea if it would have been an issue. In case it is useful, here is the full output of RefactorFirst, including the warning:

    [INFO] --- refactor-first:0.11.0-SNAPSHOT:report (refactor-first) @ core ---
    [INFO] Rendering content with org.apache.maven.skins:maven-fluido-skin:jar:2.0.0-M9 skin
    [INFO] Project Base Dir: C:\REDACTED\GitHub\core
    [INFO] Parent of Git Dir: C:\REDACTED\GitHub\core
    [INFO] Analyzing Cycles
    [INFO] Using Java 25 parser for Java 25 language feature support
    [INFO] JavaSourceFileGraphBuilder: walking 44 Java files under C:\REDACTED\GitHub\core
    [INFO] KotlinSourceFileGraphBuilder: walking 0 Kotlin files under C:\REDACTED\GitHub\core
    WARNING: A terminally deprecated method in sun.misc.Unsafe has been called
    WARNING: sun.misc.Unsafe::invokeCleaner has been called by org.jetbrains.kotlin.cli.jvm.compiler.jarfs.FastJarFileSystemKt (file:/C:/REDACTED/.m2/repository/org/jetbrains/kotlin/kotlin-compiler-embeddable/2.4.10/kotlin-compiler-embeddable-2.4.10.jar)
    WARNING: Please consider reporting this to the maintainers of class org.jetbrains.kotlin.cli.jvm.compiler.jarfs.FastJarFileSystemKt
    WARNING: sun.misc.Unsafe::invokeCleaner will be removed in a future release
    [INFO] Identifying Object Oriented Disharmonies
    [INFO] Initiating Cost Benefit calculation
    [INFO] Capturing change count based on commit timestamps
    [INFO] Ranking metric: SEC
    [INFO] Ranking metric: SDC
    [INFO] Calculating Change Proneness
    [INFO] Ranking metric: ATFD
    [INFO] Ranking metric: LAA
    [INFO] Ranking metric: FDP
    [INFO] Calculating Change Proneness
    [INFO] Generating HTML Report
    [INFO] No Package Relationship Disharmonies found
    
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions