-
-
Notifications
You must be signed in to change notification settings - Fork 828
Closed
Labels
Description
I have a simple scenario where I receive an IllegalAccessError when loading a generated class that uses a NamingStrategy.
java.lang.IllegalAccessError: class FooBar.Foo cannot access its superclass org.modelmapper.FooTest$Foo
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
at net.bytebuddy.dynamic.loading.ByteArrayClassLoader.findClass(ByteArrayClassLoader.java:48)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at net.bytebuddy.dynamic.ClassLoadingStrategy$Default.load(ClassLoadingStrategy.java:59)
at net.bytebuddy.dynamic.DynamicType$Default$Unloaded.load(DynamicType.java:1132)
at org.modelmapper.FooTest.proxyClassFor(FooTest.java:35)
at org.modelmapper.FooTest.test(FooTest.java:40)
Here's the complete test:
@Test
public class FooTest {
static class Foo {
}
public void test() {
new ByteBuddy().withNamingStrategy(new NamingStrategy() {
public String getName(UnnamedType unnamedType) {
return "FooBar." + unnamedType.getSuperClass().getSimpleName();
}
})
.subclass(Foo.class)
.method(MethodMatchers.any())
.intercept(InvocationHandlerAdapter.of(new InvocationHandler() {
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
return null;
}
}))
.make()
.load(FooTest.class.getClassLoader(), ClassLoadingStrategy.Default.WRAPPER)
.getLoaded();
}
}