You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Should work with buildSrc/test with GradleRunner and withPluginClasspath
Current Behavior
but gives this error:
> Failed to apply plugin 'foo.bar'.
> class org.gradle.accessors.dm.LibrariesForLibs_Decorated cannot be cast to class org.gradle.accessors.dm.LibrariesForLibs (org.gradle.accessors.dm.LibrariesForLibs_Decorated is in unnamed module of loader org.gradle.internal.classloader.VisitableURLClassLoader @30747123; org.gradle.accessors.dm.LibrariesForLibs is in unnamed module of loader org.gradle.internal.classloader.VisitableURLClassLoader @66bdd123)
Context
if I print the classloaders like this:
import org.gradle.accessors.dm.LibrariesForLibs
internal val Project.libs: LibrariesForLibs
get() {
printClassloader(libExtension().javaClass)
printClassloader(libExtension().javaClass.superclass)
printClassloader(LibrariesForLibs::class.java)
return libExtension() as LibrariesForLibs
}
private fun Project.libExtension(): Any = extensions.getByName("libs")
fun printClassloader(clazz: Class<*>) {
println("class ${clazz.canonicalName} has CL ${clazz.classLoader}")
println("location ${clazz.protectionDomain.codeSource.location}")
var parent = clazz.classLoader.parent
while(parent != null) {
println("with parent $parent")
parent = parent.parent
}
}
I will print something like this:
> Configure project :foo:bar:whevs
class org.gradle.accessors.dm.LibrariesForLibs_Decorated has CL VisitableURLClassLoader(ClassLoaderScopeIdentifier.Id{coreAndPlugins:settings[:]:buildSrc[:](export)})
location file:/private/var/folders/zg/tjjb_fkx1355xx67t7pyl43r123/T/junit15680257868112259141/.gradle/7.5.1/dependencies-accessors/f5ba69d2465650fe8c727e76995fffc6234da247/classes/
with parent CachingClassLoader(FilteringClassLoader(VisitableURLClassLoader(legacy-mixin-loader)))
with parent FilteringClassLoader(VisitableURLClassLoader(legacy-mixin-loader))
with parent VisitableURLClassLoader(legacy-mixin-loader)
with parent VisitableURLClassLoader(ant-and-gradle-loader)
with parent VisitableURLClassLoader(ant-loader)
with parent jdk.internal.loader.ClassLoaders$PlatformClassLoader@4c180213
class org.gradle.accessors.dm.LibrariesForLibs has CL VisitableURLClassLoader(ClassLoaderScopeIdentifier.Id{coreAndPlugins:settings[:]:buildSrc[:](export)})
location file:/private/var/folders/zg/tjjb_fkx1355xx67t7pyl43r123/T/junit15680257868112259141/.gradle/7.5.1/dependencies-accessors/f5ba69d2465650fe8c727e76995fffc6234da247/classes/
with parent CachingClassLoader(FilteringClassLoader(VisitableURLClassLoader(legacy-mixin-loader)))
with parent FilteringClassLoader(VisitableURLClassLoader(legacy-mixin-loader))
with parent VisitableURLClassLoader(legacy-mixin-loader)
with parent VisitableURLClassLoader(ant-and-gradle-loader)
with parent VisitableURLClassLoader(ant-loader)
with parent jdk.internal.loader.ClassLoaders$PlatformClassLoader@4c180213
class org.gradle.accessors.dm.LibrariesForLibs has CL VisitableURLClassLoader(ClassLoaderScopeIdentifier.Id{coreAndPlugins:injected-plugin(local)})
location file:/Users/me/git/myproject/buildSrc/build/tmp/test/work/.gradle-test-kit/caches/jars-9/749352387bd7e916adb995fc3d840123/classes.jar
with parent CachingClassLoader(FilteringClassLoader(VisitableURLClassLoader(legacy-mixin-loader)))
with parent FilteringClassLoader(VisitableURLClassLoader(legacy-mixin-loader))
with parent VisitableURLClassLoader(legacy-mixin-loader)
with parent VisitableURLClassLoader(ant-and-gradle-loader)
with parent VisitableURLClassLoader(ant-loader)
with parent jdk.internal.loader.ClassLoaders$PlatformClassLoader@4c180213
Your Environment
Gradle 7.5.1
The text was updated successfully, but these errors were encountered:
yogurtearl
changed the title
buildSrc/test loads LibrariesForLibs twice from 2 difference classloaders.buildSrc/test loads LibrariesForLibs twice from 2 different classloaders.
Dec 5, 2022
When using to the work-around posted here:
#15383 (comment)
i.e.
When that workaround is used with tests in
buildSrc/test
, thenorg.gradle.accessors.dm.LibrariesForLibs
is loaded from 2 different class loaders:VisitableURLClassLoader(ClassLoaderScopeIdentifier.Id{coreAndPlugins:injected-plugin(local)})
and
VisitableURLClassLoader(ClassLoaderScopeIdentifier.Id{coreAndPlugins:settings[:]:buildSrc[:](export)})
Expected Behavior
Should work with
buildSrc/test
withGradleRunner
andwithPluginClasspath
Current Behavior
but gives this error:
Context
if I print the classloaders like this:
I will print something like this:
Your Environment
Gradle 7.5.1
The text was updated successfully, but these errors were encountered: