When attempting to transform a jar compiled with JDK 17, I get java.lang.UnsupportedOperationException: PermittedSubclasses requires ASM9.
This is due to Atlas using the constructor for ClassProviderInheritanceProvider without an API version:
|
new ClassProviderInheritanceProvider(new CompositeClassProvider(classpath)) |
, which defaults to ASM7:
https://github.com/CadixDev/Bombe/blob/446e809ffce194eb70ae3f3f9bb7db4af63bf3de/bombe/src/main/java/org/cadixdev/bombe/analysis/asm/ClassProviderInheritanceProvider.java#L71
My temporary solution has been some ugly reflection:
atlas.install {
// Replace the inheritance provider start
val inheritanceProvider = AtlasTransformerContext::class.java.getDeclaredField("inheritanceProvider")
inheritanceProvider.isAccessible = true
val classProvider = ClassProviderInheritanceProvider::class.java.getDeclaredField("provider")
classProvider.isAccessible = true
inheritanceProvider.set(
it,
ClassProviderInheritanceProvider(
Opcodes.ASM9,
classProvider.get(inheritanceProvider.get(it)) as ClassProvider
)
)
// Replace the inheritance provider end
// return transformer to install...
}
Not sure if this should be fixed in Atlas or Bombe, so I am opening this issue. Thanks!
When attempting to transform a jar compiled with JDK 17, I get
java.lang.UnsupportedOperationException: PermittedSubclasses requires ASM9.This is due to Atlas using the constructor for
ClassProviderInheritanceProviderwithout an API version:Atlas/src/main/java/org/cadixdev/atlas/Atlas.java
Line 141 in 5dd628a
My temporary solution has been some ugly reflection:
atlas.install { // Replace the inheritance provider start val inheritanceProvider = AtlasTransformerContext::class.java.getDeclaredField("inheritanceProvider") inheritanceProvider.isAccessible = true val classProvider = ClassProviderInheritanceProvider::class.java.getDeclaredField("provider") classProvider.isAccessible = true inheritanceProvider.set( it, ClassProviderInheritanceProvider( Opcodes.ASM9, classProvider.get(inheritanceProvider.get(it)) as ClassProvider ) ) // Replace the inheritance provider end // return transformer to install... }Not sure if this should be fixed in Atlas or Bombe, so I am opening this issue. Thanks!