Closed
Description
If you run the app with java --illegal-access=deny
in JDK 9 or higher, you get an IllegalAccessException
because the Utils
class uses a private API:
java.lang.IllegalAccessError: class com.coxautodev.graphql.tools.UtilsKt (in unnamed module @0x793138bd) cannot access class sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl (in module java.base) because module java.base does not export sun.reflect.generics.reflectiveObjects to unnamed module @0x793138bd
at com.coxautodev.graphql.tools.UtilsKt.unwrap(Utils.kt:31)
at com.coxautodev.graphql.tools.FieldResolverScanner$Companion.getAllMethods(FieldResolverScanner.kt:27)
at com.coxautodev.graphql.tools.FieldResolverScanner.findResolverMethod(FieldResolverScanner.kt:85)
at com.coxautodev.graphql.tools.FieldResolverScanner.findFieldResolver(FieldResolverScanner.kt:63)
at com.coxautodev.graphql.tools.FieldResolverScanner.findFieldResolver(FieldResolverScanner.kt:43)
at com.coxautodev.graphql.tools.SchemaClassScanner.scanResolverInfoForPotentialMatches(SchemaClassScanner.kt:251)
at com.coxautodev.graphql.tools.SchemaClassScanner.handleRootType(SchemaClassScanner.kt:121)
at com.coxautodev.graphql.tools.SchemaClassScanner.scanForClasses(SchemaClassScanner.kt:79)
at com.coxautodev.graphql.tools.SchemaParserBuilder.scan(SchemaParserBuilder.kt:166)
at com.coxautodev.graphql.tools.SchemaParserBuilder.build(SchemaParserBuilder.kt:207)
You can work around this by using explicity allowing access to this package:
java --add-opens java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED --illegal-access=deny
You also may need to use add-opens
inside of Maven like so:
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<includes>
<include>**/*Test.java</include>
</includes>
<argLine>--add-opens java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED @{argLine}</argLine>
</configuration>
</plugin>
It'd be nice to have the illegal API removed, however...
Metadata
Metadata
Assignees
Labels
No labels