Vladimir Sitnikov
08/05/2025, 8:30 AMjava.lang.NoClassDefFoundError: org/gradle/util/VersionNumber
Well, Gradle had VersionNumber class for quite some time, and it is sad Gradle 9 broke backward compatibility with plugins which still use VersionNumber from org.gradle.util
I wonder what are the benefits for Gradle to drop the class. My guess is it does not require much efforts to support.
It would be so much better if Gradle used something like @Deprecated(level=Hidden) instead of dropping the class.Martin
08/05/2025, 8:35 AMlevel=Hidden doesn't work for Java callers.Vladimir Sitnikov
08/05/2025, 8:35 AMMartin
08/05/2025, 8:36 AMMartin
08/05/2025, 8:38 AMAndrey Mishchenko
08/05/2025, 8:39 AMVladimir Sitnikov
08/05/2025, 8:39 AMVersionNumber?Andrey Mishchenko
08/05/2025, 8:40 AMMartin
08/05/2025, 8:41 AMLike can you declare a Java class method "hidden"?For the record, it uses
synthetic tilMartin
08/05/2025, 8:43 AMVladimir Sitnikov
08/05/2025, 8:43 AMAndrey Mishchenko
08/05/2025, 8:43 AMAndrey Mishchenko
08/05/2025, 8:44 AMVladimir Sitnikov
08/05/2025, 8:44 AMAndrey Mishchenko
08/05/2025, 8:44 AMAndrey Mishchenko
08/05/2025, 8:44 AMVladimir Sitnikov
08/05/2025, 8:45 AMAndrey Mishchenko
08/05/2025, 8:45 AMAndrey Mishchenko
08/05/2025, 8:46 AMVladimir Sitnikov
08/05/2025, 8:46 AMAndrey Mishchenko
08/05/2025, 8:47 AMAndrey Mishchenko
08/05/2025, 8:48 AMVladimir Sitnikov
08/05/2025, 8:50 AMAndrey Mishchenko
08/05/2025, 8:55 AMAndrey Mishchenko
08/05/2025, 8:55 AMAndrey Mishchenko
08/05/2025, 8:55 AMVladimir Sitnikov
08/05/2025, 8:55 AMAndrey Mishchenko
08/05/2025, 8:56 AMVladimir Sitnikov
08/05/2025, 8:56 AMVersionNumberAndrey Mishchenko
08/05/2025, 8:56 AMVladimir Sitnikov
08/05/2025, 8:56 AMAndrey Mishchenko
08/05/2025, 8:56 AMVladimir Sitnikov
08/05/2025, 8:57 AMAndrey Mishchenko
08/05/2025, 8:57 AMVladimir Sitnikov
08/05/2025, 8:57 AMAndrey Mishchenko
08/05/2025, 8:57 AMVladimir Sitnikov
08/05/2025, 8:58 AMAndrey Mishchenko
08/05/2025, 8:58 AMMartin
08/05/2025, 8:59 AMAndrey Mishchenko
08/05/2025, 8:59 AMAndrey Mishchenko
08/05/2025, 8:59 AMAndrey Mishchenko
08/05/2025, 9:00 AMVladimir Sitnikov
08/05/2025, 9:01 AMVladimir Sitnikov
08/05/2025, 9:03 AMAndrey Mishchenko
08/05/2025, 9:06 AMAndrey Mishchenko
08/05/2025, 9:07 AMAndrey Mishchenko
08/05/2025, 9:07 AMVladimir Sitnikov
08/05/2025, 9:17 AMDeprecated(level=Hidden) . Have you seen the suggestion above?
It would prevent new usages while it would keep backward compatibility at the same timeAndrey Mishchenko
08/05/2025, 9:19 AMVampire
08/05/2025, 9:19 AMAndrey Mishchenko
08/05/2025, 9:19 AMVladimir Sitnikov
08/05/2025, 9:20 AMsynthetic at the bytecode level with Java just fineVampire
08/05/2025, 9:20 AMVladimir Sitnikov
08/05/2025, 9:20 AMVampire
08/05/2025, 9:20 AMVampire
08/05/2025, 9:21 AMVladimir Sitnikov
08/05/2025, 9:21 AMVampire
08/05/2025, 9:21 AMAndrey Mishchenko
08/05/2025, 9:21 AMVladimir Sitnikov
08/05/2025, 9:23 AMjsr bytecode instruction in Java 1.6, yet Java still executes existing Java 1.5 classes that still use jsr instructionAndrey Mishchenko
08/05/2025, 9:23 AMVampire
08/05/2025, 9:24 AMAndrey Mishchenko
08/05/2025, 9:24 AMVampire
08/05/2025, 9:24 AMVampire
08/05/2025, 9:24 AMAndrey Mishchenko
08/05/2025, 9:24 AMAndrey Mishchenko
08/05/2025, 9:24 AMVladimir Sitnikov
08/05/2025, 9:25 AMI just for fixing it, not supporting previous mistakesJava handled
jsr removal much better than Gradle did with its org.gradle.utilVampire
08/05/2025, 9:25 AMVladimir Sitnikov
08/05/2025, 10:03 AMVersionNumber and ConfigureUtil does help: https://github.com/pgjdbc/pgjdbc/pull/3752
I copied the classes under build-logic , and it works.
Unfortunately it breaks with Groovy doing some Groovy things:
groovy.lang.MissingMethodException: No signature of method: groovy.xml.MarkupBuilder.setOmitNullAttributes() is applicable for argument types: (Boolean) values: [true]
Possible solutions: setOmitNullAttributes(boolean), isOmitNullAttributes(), setOmitEmptyAttributes(boolean)
at com.github.lburgazzoli.gradle.plugin.karaf.features.KarafFeaturesBuilder.<init>(KarafFeaturesBuilder.groovy:35)
at com.github.lburgazzoli.gradle.plugin.karaf.features.KarafFeaturesBuilder.<init>(KarafFeaturesBuilder.groovy:27)
However, the takeaway is that keeping VersionNumber and ConfigureUtil afloat is not that hard.Andrey Mishchenko
08/05/2025, 10:05 AMVladimir Sitnikov
08/05/2025, 10:06 AMBoolean to boolean which sounds strange.Andrey Mishchenko
08/05/2025, 10:07 AMVladimir Sitnikov
08/05/2025, 10:21 AMVersionNumber right under my build-logic , and it does heal VersionNumber issue.
At the same time, forking the plugin, reworking the code, and pushing it would likely take much more time.
For instance, Gradle forbids com.github... namespace for the plugins yet Maven Central happily accepts it.
Those small breakages accumulate over time, and they do exhaust maintainers.Vladimir Sitnikov
08/05/2025, 10:25 AMVampire
08/05/2025, 10:26 AMFor instance, Gradle forbidsnamespace for the plugins yet Maven Central happily accepts it.com.github...
Those small breakages accumulate over time, and they do exhaust maintainers.MC only accepts it for old namespaces. MC started with only accepting io.github for new namespaces.
Vampire
08/05/2025, 10:27 AMAt the same time, forks dilute the community which is bad in my opinion.As long as the main project is maintained, yes. But if it is dead and you do not have a chance to overtake it, forking is the way to keep it alive which serves the community better than just ignoring that the main project is abandoned. 🤷♂️
Vampire
08/05/2025, 10:28 AMVladimir Sitnikov
08/05/2025, 10:28 AMcom.github.autostyle which happends to be a fork of spotless 🤣 ).
I wan’t able to publish newer versions to Gradle Portal due to Gradle’s limitation. Luckily I can still publish to Central and postpone the group migration.Vampire
08/05/2025, 10:28 AMVampire
08/05/2025, 10:30 AMVladimir Sitnikov
08/05/2025, 10:31 AMask for enabling itThe plugin was already published under
com.github.autostyle before to Gradle Plugin Portal, and I expect they added a client-side validation.Vampire
08/05/2025, 10:32 AMAndrey Mishchenko
08/05/2025, 10:33 AMVladimir Sitnikov
08/05/2025, 10:35 AMVampire
08/05/2025, 11:38 AMI would not expect this to be client-side.
Plugins previously published under that ID hopefully can post updates.
I'd guess it is just an initial-validation check hopefully.Yep, confirmed. https://plugins.gradle.org/plugin/com.github.sakata1222.jacoco-markdown was released 2 days ago and uses latest plugin version for publishing: https://github.com/sakata1222/jacoco-markdown-gradle-plugin/blob/main/plugin/build.gradle#L10 since 2 years ago.
Vladimir Sitnikov
08/05/2025, 1:33 PMcom.gradle.plugin-publish is 1.3.1 rather than 1.1.0 at https://github.com/sakata1222/jacoco-markdown-gradle-plugin/blob/f33e2f428792e5a62a6a5de8b88344a392f07b62/plugin/build.gradle#L10Louis Jacomet
08/06/2025, 7:14 AMplugin-portal-support at <http://gradle.com|gradle.com>