Boris Petrov
09/19/2025, 7:32 AM> No signature of method: org.akhikhl.gretty.LauncherBase.beforeLaunch() is applicable for argument types: () values: []
Possible solutions: beforeLaunch(), afterLaunch()
You can see in the code that there very much is such a method on that class. Even the Possible solutions below the error mention it. The error happens on the super.beforeLaunch() call in DefaultLauncher. The details are not important that much - it's just that every call to super.XXX() (not just here - also in other places) in Gradle 9/Groovy 4 fails with No signature of method ... is applicable for argument types . Something which doesn't happen in Gradle 8/Groovy 3. Does anyone have any idea why that might be?
P.S. Something of note - the plugin is compiled with Gradle 6 (so I think Groovy 2) (for backwards-compatibility). Not sure if it matters. I see the compiled code in the JAR:
CallSite[] arrayOfCallSite = $getCallSiteArray();
Object object = arrayOfCallSite[6].callStatic(DefaultLauncher.class, this.project);
this.runnerClasspath = (Collection<URL>)ScriptBytecodeAdapter.castToType(object, Collection.class);
ScriptBytecodeAdapter.invokeMethodOnSuper0(LauncherBase.class, (GroovyObject)this, "beforeLaunch");
Not sure if this somehow "broke" in Gradle 9/Groovy 4?Vampire
09/19/2025, 8:08 AMBoris Petrov
09/19/2025, 8:13 AMVampire
09/19/2025, 8:22 AMVampire
09/19/2025, 8:22 AMVampire
09/19/2025, 8:23 AMBrowser.drive is not found while it is there.
The 284 says trying to set a read-only property, but the setter method is there.Boris Petrov
09/19/2025, 8:28 AMOctavia Togami
09/19/2025, 8:38 AMBoris Petrov
09/19/2025, 8:38 AMVampire
09/19/2025, 8:39 AMOctavia Togami
09/19/2025, 8:39 AMOctavia Togami
09/19/2025, 8:40 AMVampire
09/19/2025, 8:48 AMVampire
09/19/2025, 8:48 AMBoris Petrov
09/19/2025, 8:56 AMVampire
09/19/2025, 9:00 AMOctavia Togami
09/19/2025, 9:03 AMBoris Petrov
09/19/2025, 9:04 AMTypeCheckingMode.SKIP. Could that be the problem?Octavia Togami
09/19/2025, 9:04 AMBoris Petrov
09/19/2025, 9:05 AMBoris Petrov
09/19/2025, 9:06 AMVampire
09/19/2025, 9:07 AMThe specific issue is https://issues.apache.org/jira/browse/GROOVY-11568But isn't that about calling private methods in superclasses?
beforeLaunch is public, isn't it?Boris Petrov
09/19/2025, 9:08 AMBoris Petrov
09/19/2025, 9:09 AMBoris Petrov
09/19/2025, 9:09 AMBoris Petrov
09/19/2025, 9:10 AMBoris Petrov
09/19/2025, 9:10 AMBoris Petrov
09/19/2025, 9:10 AMBoris Petrov
09/19/2025, 9:10 AMBoris Petrov
09/19/2025, 9:13 AMTypeCheckingMode.SKIP. Let's hope that resolves it...Boris Petrov
09/19/2025, 9:25 AMBoris Petrov
09/19/2025, 9:25 AMVampire
09/19/2025, 9:30 AMOh wow, that worked! Didn't expect that.Why not?
Vampire
09/19/2025, 9:31 AM@CompileStatic(SKIP) is like not having @CompileStatic at all.
Except if you for example have a @CompileStatic class with a @CompileStatic(SKIP) method where all is compiled static except for that method.Vampire
09/19/2025, 9:32 AMBoris Petrov
09/19/2025, 9:33 AM@CompileStatic(TypeCheckingMode.SKIP) do then?Vampire
09/19/2025, 9:37 AMVampire
09/19/2025, 9:38 AM@CompileStatic
class Foo {
def foo() {}
@CompileStatic(SKIP)
def bar() {}
}
foo will be statically compiled, bar will be dynamically compiled as you switched static compilation off for that method even though it was switched on for the class.Vampire
09/19/2025, 9:40 AMVampire
09/19/2025, 9:40 AM@CompileDynamic , but I guess it is just an alias. 🤷♂️Boris Petrov
09/19/2025, 10:17 AM