indy-proxy doesn't seem to build on JDK9. The unit tests throw InaccessibleObjectExceptions and (more worryingly) ICCEs:
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running net.fushizen.invokedynamic.proxy.ArbitraryConstructorTests
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.039 sec - in net.fushizen.invokedynamic.proxy.ArbitraryConstructorTests
Running net.fushizen.invokedynamic.proxy.DynamicProxyArgAndReturnTests
Tests run: 2, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.061 sec <<< FAILURE! - in net.fushizen.invokedynamic.proxy.DynamicProxyArgAndReturnTests
testArgs(net.fushizen.invokedynamic.proxy.DynamicProxyArgAndReturnTests) Time elapsed: 0.05 sec <<< ERROR!
java.lang.ExceptionInInitializerError: null
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:207)
at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:192)
at java.base/java.lang.reflect.Method.setAccessible(Method.java:186)
at org.mockito.cglib.core.ReflectUtils$2.run(ReflectUtils.java:57)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at org.mockito.cglib.core.ReflectUtils.<clinit>(ReflectUtils.java:47)
at org.mockito.cglib.core.KeyFactory$Generator.generateClass(KeyFactory.java:167)
at org.mockito.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
at org.mockito.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:217)
at org.mockito.cglib.core.KeyFactory$Generator.create(KeyFactory.java:145)
at org.mockito.cglib.core.KeyFactory.create(KeyFactory.java:117)
at org.mockito.cglib.core.KeyFactory.create(KeyFactory.java:109)
at org.mockito.cglib.core.KeyFactory.create(KeyFactory.java:105)
at org.mockito.cglib.proxy.Enhancer.<clinit>(Enhancer.java:70)
at org.mockito.internal.creation.cglib.ClassImposterizer.createProxyClass(ClassImposterizer.java:95)
at org.mockito.internal.creation.cglib.ClassImposterizer.imposterise(ClassImposterizer.java:57)
at org.mockito.internal.creation.cglib.ClassImposterizer.imposterise(ClassImposterizer.java:49)
at org.mockito.internal.creation.cglib.CglibMockMaker.createMock(CglibMockMaker.java:24)
at org.mockito.internal.util.MockUtil.createMock(MockUtil.java:33)
at org.mockito.internal.MockitoCore.mock(MockitoCore.java:59)
at org.mockito.Mockito.mock(Mockito.java:1285)
at org.mockito.Mockito.mock(Mockito.java:1163)
at net.fushizen.invokedynamic.proxy.DynamicProxyArgAndReturnTests.testArgs(DynamicProxyArgAndReturnTests.java:76)
Running net.fushizen.invokedynamic.proxy.DynamicProxySmokeTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.009 sec - in net.fushizen.invokedynamic.proxy.DynamicProxySmokeTest
Running net.fushizen.invokedynamic.proxy.DynamicProxySuperclassTests
Tests run: 16, Failures: 0, Errors: 8, Skipped: 0, Time elapsed: 0.039 sec <<< FAILURE! - in net.fushizen.invokedynamic.proxy.DynamicProxySuperclassTests
whenDefaultMethodIsAccessibleThroughSuperclass_noErrorThrown(net.fushizen.invokedynamic.proxy.DynamicProxySuperclassTests) Time elapsed: 0.004 sec <<< ERROR!
java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @72f926e6
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:207)
at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:192)
at java.base/java.lang.reflect.Method.setAccessible(Method.java:186)
at net.fushizen.invokedynamic.proxy.DynamicProxy.loadClass(DynamicProxy.java:398)
at net.fushizen.invokedynamic.proxy.DynamicProxy.generateProxyClass(DynamicProxy.java:380)
at net.fushizen.invokedynamic.proxy.DynamicProxy.access$000(DynamicProxy.java:20)
at net.fushizen.invokedynamic.proxy.DynamicProxy$Builder.build(DynamicProxy.java:320)
at net.fushizen.invokedynamic.proxy.DynamicProxySuperclassTests.whenDefaultMethodIsAccessibleThroughSuperclass_noErrorThrown(DynamicProxySuperclassTests.java:175)
whenDefaultMethodIsAccessibleThroughSuperinterface_noErrorThrown(net.fushizen.invokedynamic.proxy.DynamicProxySuperclassTests) Time elapsed: 0.003 sec <<< ERROR!
java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @72f926e6
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:207)
at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:192)
at java.base/java.lang.reflect.Method.setAccessible(Method.java:186)
at net.fushizen.invokedynamic.proxy.DynamicProxy.loadClass(DynamicProxy.java:398)
at net.fushizen.invokedynamic.proxy.DynamicProxy.generateProxyClass(DynamicProxy.java:380)
at net.fushizen.invokedynamic.proxy.DynamicProxy.access$000(DynamicProxy.java:20)
at net.fushizen.invokedynamic.proxy.DynamicProxy$Builder.build(DynamicProxy.java:320)
at net.fushizen.invokedynamic.proxy.DynamicProxySuperclassTests.whenDefaultMethodIsAccessibleThroughSuperinterface_noErrorThrown(DynamicProxySuperclassTests.java:186)
whenDefaultImplementationAvailable_itCanBeOverridden(net.fushizen.invokedynamic.proxy.DynamicProxySuperclassTests) Time elapsed: 0.003 sec <<< ERROR!
java.lang.IncompatibleClassChangeError: Inconsistent constant pool data in classfile for class net/fushizen/invokedynamic/proxy/DynamicProxySuperclassTests$I1. Method foo()Ljava/lang/String; at index 61 is CONSTANT_MethodRef and should be CONSTANT_InterfaceMethodRef
at net.fushizen.invokedynamic.proxy.generated.DynamicProxy$$9.foo(Unknown Source)
at net.fushizen.invokedynamic.proxy.DynamicProxySuperclassTests.whenDefaultImplementationAvailable_itCanBeOverridden(DynamicProxySuperclassTests.java:52)
whenDefaultImplementationAvailable_itIsDelegatedTo(net.fushizen.invokedynamic.proxy.DynamicProxySuperclassTests) Time elapsed: 0.002 sec <<< ERROR!
java.lang.IncompatibleClassChangeError: Inconsistent constant pool data in classfile for class net/fushizen/invokedynamic/proxy/DynamicProxySuperclassTests$I1. Method foo()Ljava/lang/String; at index 61 is CONSTANT_MethodRef and should be CONSTANT_InterfaceMethodRef
at net.fushizen.invokedynamic.proxy.generated.DynamicProxy$$10.foo(Unknown Source)
at net.fushizen.invokedynamic.proxy.DynamicProxySuperclassTests.whenDefaultImplementationAvailable_itIsDelegatedTo(DynamicProxySuperclassTests.java:25)
whenDefaultMethodProviderIsInaccessible_andPackageSetImplicitly_noExceptionThrown(net.fushizen.invokedynamic.proxy.DynamicProxySuperclassTests) Time elapsed: 0.001 sec <<< ERROR!
java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @72f926e6
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:207)
at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:192)
at java.base/java.lang.reflect.Method.setAccessible(Method.java:186)
at net.fushizen.invokedynamic.proxy.DynamicProxy.loadClass(DynamicProxy.java:398)
at net.fushizen.invokedynamic.proxy.DynamicProxy.generateProxyClass(DynamicProxy.java:380)
at net.fushizen.invokedynamic.proxy.DynamicProxy.access$000(DynamicProxy.java:20)
at net.fushizen.invokedynamic.proxy.DynamicProxy$Builder.build(DynamicProxy.java:320)
at net.fushizen.invokedynamic.proxy.DynamicProxySuperclassTests.whenDefaultMethodProviderIsInaccessible_andPackageSetImplicitly_noExceptionThrown(DynamicProxySuperclassTests.java:214)
whenDefaultMethodProviderIsInaccessible_andPackageSet_noExceptionThrown(net.fushizen.invokedynamic.proxy.DynamicProxySuperclassTests) Time elapsed: 0.001 sec <<< ERROR!
java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @72f926e6
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:207)
at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:192)
at java.base/java.lang.reflect.Method.setAccessible(Method.java:186)
at net.fushizen.invokedynamic.proxy.DynamicProxy.loadClass(DynamicProxy.java:398)
at net.fushizen.invokedynamic.proxy.DynamicProxy.generateProxyClass(DynamicProxy.java:380)
at net.fushizen.invokedynamic.proxy.DynamicProxy.access$000(DynamicProxy.java:20)
at net.fushizen.invokedynamic.proxy.DynamicProxy$Builder.build(DynamicProxy.java:320)
at net.fushizen.invokedynamic.proxy.DynamicProxySuperclassTests.whenDefaultMethodProviderIsInaccessible_andPackageSet_noExceptionThrown(DynamicProxySuperclassTests.java:206)
whenShadowedSupermethodIsCalled_superMethodHandleIsAvailable(net.fushizen.invokedynamic.proxy.DynamicProxySuperclassTests) Time elapsed: 0.002 sec <<< ERROR!
java.lang.IncompatibleClassChangeError: Inconsistent constant pool data in classfile for class net/fushizen/invokedynamic/proxy/DynamicProxySuperclassTests$SuperSuper. Method method()I at index 70 is CONSTANT_MethodRef and should be CONSTANT_InterfaceMethodRef
at net.fushizen.invokedynamic.proxy.generated.DynamicProxy$$18.method(Unknown Source)
at net.fushizen.invokedynamic.proxy.DynamicProxySuperclassTests.whenShadowedSupermethodIsCalled_superMethodHandleIsAvailable(DynamicProxySuperclassTests.java:74)
whenAbstractVariantsAvailable_callIsNotAmbiguous(net.fushizen.invokedynamic.proxy.DynamicProxySuperclassTests) Time elapsed: 0.001 sec <<< ERROR!
java.lang.IncompatibleClassChangeError: Inconsistent constant pool data in classfile for class net/fushizen/invokedynamic/proxy/DynamicProxySuperclassTests$I1. Method foo()Ljava/lang/String; at index 63 is CONSTANT_MethodRef and should be CONSTANT_InterfaceMethodRef
at net.fushizen.invokedynamic.proxy.generated.DynamicProxy$$21.foo(Unknown Source)
at net.fushizen.invokedynamic.proxy.DynamicProxySuperclassTests.whenAbstractVariantsAvailable_callIsNotAmbiguous(DynamicProxySuperclassTests.java:89)
Running net.fushizen.invokedynamic.proxy.DynamicProxyVisibilityTests
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 sec - in net.fushizen.invokedynamic.proxy.DynamicProxyVisibilityTests
Running net.fushizen.invokedynamic.proxy.ErrorCaseTests
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec - in net.fushizen.invokedynamic.proxy.ErrorCaseTests
Running net.fushizen.invokedynamic.proxy.PrivateAccessTests
Tests run: 8, Failures: 0, Errors: 4, Skipped: 0, Time elapsed: 0.008 sec <<< FAILURE! - in net.fushizen.invokedynamic.proxy.PrivateAccessTests
testProtectedInterface(net.fushizen.invokedynamic.proxy.PrivateAccessTests) Time elapsed: 0.001 sec <<< ERROR!
java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @72f926e6
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:207)
at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:192)
at java.base/java.lang.reflect.Method.setAccessible(Method.java:186)
at net.fushizen.invokedynamic.proxy.DynamicProxy.loadClass(DynamicProxy.java:398)
at net.fushizen.invokedynamic.proxy.DynamicProxy.generateProxyClass(DynamicProxy.java:380)
at net.fushizen.invokedynamic.proxy.DynamicProxy.access$000(DynamicProxy.java:20)
at net.fushizen.invokedynamic.proxy.DynamicProxy$Builder.build(DynamicProxy.java:320)
at net.fushizen.invokedynamic.proxy.PrivateAccessTests.testProtectedInterface(PrivateAccessTests.java:16)
testPackagePrivateSupers(net.fushizen.invokedynamic.proxy.PrivateAccessTests) Time elapsed: 0.001 sec <<< ERROR!
java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @72f926e6
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:207)
at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:192)
at java.base/java.lang.reflect.Method.setAccessible(Method.java:186)
at net.fushizen.invokedynamic.proxy.DynamicProxy.loadClass(DynamicProxy.java:398)
at net.fushizen.invokedynamic.proxy.DynamicProxy.generateProxyClass(DynamicProxy.java:380)
at net.fushizen.invokedynamic.proxy.DynamicProxy.access$000(DynamicProxy.java:20)
at net.fushizen.invokedynamic.proxy.DynamicProxy$Builder.build(DynamicProxy.java:320)
at net.fushizen.invokedynamic.proxy.PrivateAccessTests.testPackagePrivateSupers(PrivateAccessTests.java:38)
testProtectedSuperclassOtherPackage(net.fushizen.invokedynamic.proxy.PrivateAccessTests) Time elapsed: 0.002 sec <<< ERROR!
java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @72f926e6
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:207)
at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:192)
at java.base/java.lang.reflect.Method.setAccessible(Method.java:186)
at net.fushizen.invokedynamic.proxy.DynamicProxy.loadClass(DynamicProxy.java:398)
at net.fushizen.invokedynamic.proxy.DynamicProxy.generateProxyClass(DynamicProxy.java:380)
at net.fushizen.invokedynamic.proxy.DynamicProxy.access$000(DynamicProxy.java:20)
at net.fushizen.invokedynamic.proxy.DynamicProxy$Builder.build(DynamicProxy.java:320)
at net.fushizen.invokedynamic.proxy.PrivateAccessTests.testProtectedSuperclassOtherPackage(PrivateAccessTests.java:28)
testProtectedSuperclass(net.fushizen.invokedynamic.proxy.PrivateAccessTests) Time elapsed: 0.002 sec <<< ERROR!
java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @72f926e6
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:207)
at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:192)
at java.base/java.lang.reflect.Method.setAccessible(Method.java:186)
at net.fushizen.invokedynamic.proxy.DynamicProxy.loadClass(DynamicProxy.java:398)
at net.fushizen.invokedynamic.proxy.DynamicProxy.generateProxyClass(DynamicProxy.java:380)
at net.fushizen.invokedynamic.proxy.DynamicProxy.access$000(DynamicProxy.java:20)
at net.fushizen.invokedynamic.proxy.DynamicProxy$Builder.build(DynamicProxy.java:320)
at net.fushizen.invokedynamic.proxy.PrivateAccessTests.testProtectedSuperclass(PrivateAccessTests.java:23)
Running net.fushizen.invokedynamic.proxy.ProxyProxyTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.005 sec - in net.fushizen.invokedynamic.proxy.ProxyProxyTest
Running net.fushizen.invokedynamic.proxy.StatefulProxyTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec - in net.fushizen.invokedynamic.proxy.StatefulProxyTest
Results :
Tests in error:
DynamicProxyArgAndReturnTests.testArgs:76 » ExceptionInInitializer
DynamicProxySuperclassTests.whenAbstractVariantsAvailable_callIsNotAmbiguous:89 » IncompatibleClassChange
DynamicProxySuperclassTests.whenDefaultImplementationAvailable_itCanBeOverridden:52 » IncompatibleClassChange
DynamicProxySuperclassTests.whenDefaultImplementationAvailable_itIsDelegatedTo:25 » IncompatibleClassChange
DynamicProxySuperclassTests.whenDefaultMethodIsAccessibleThroughSuperclass_noErrorThrown:175 » InaccessibleObject
DynamicProxySuperclassTests.whenDefaultMethodIsAccessibleThroughSuperinterface_noErrorThrown:186 » InaccessibleObject
DynamicProxySuperclassTests.whenDefaultMethodProviderIsInaccessible_andPackageSetImplicitly_noExceptionThrown:214 » InaccessibleObject
DynamicProxySuperclassTests.whenDefaultMethodProviderIsInaccessible_andPackageSet_noExceptionThrown:206 » InaccessibleObject
DynamicProxySuperclassTests.whenShadowedSupermethodIsCalled_superMethodHandleIsAvailable:74 » IncompatibleClassChange
PrivateAccessTests.testPackagePrivateSupers:38 » InaccessibleObject Unable to ...
PrivateAccessTests.testProtectedInterface:16 » InaccessibleObject Unable to ma...
PrivateAccessTests.testProtectedSuperclass:23 » InaccessibleObject Unable to m...
PrivateAccessTests.testProtectedSuperclassOtherPackage:28 » InaccessibleObject
Tests run: 41, Failures: 0, Errors: 13, Skipped: 0
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] net.fushizen.invokedynamic.proxy:invokedynamic-proxy FAILURE [ 1.999 s]
[INFO] invokedynamic-proxy-pom ............................ SKIPPED
[INFO] JMH benchmark sample: Java ......................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.076 s
[INFO] Finished at: 2016-12-28T23:14:28-08:00
[INFO] Final Memory: 11M/38M
[INFO] ------------------------------------------------------------------------