26 Java 9 支持
这是使用早期 Java 9+ 支持的已知问题、注意事项和解决方法的列表。虽然 Java 9 支持远未完成,但核心功能似乎仅在少数警告和消息出现的情况下才有效。
1.26 已知库注意事项
以下是 Ratpack 在 Java 9 上无缝运行的已知版本冲突或要求。
ratpack-groovy
需要 Groovy 2.5.2 或更高版本,如问题 #1411 所述。ratpack-groovy-test
需要 Groovy 2.5.2 或更高版本,如问题 #1411 所述。
2.26 已知问题
以下是目前由 Java 9 和 Ratpack 的底层组件引起的问题。将在每种情况下提供解决方法。
3.26 已知的 Java 9 错误/警告消息
以下是 Java 9+ 发出的预期消息。
- Guice 问题中不合法反射访问 google/guice#1133
警告:已发生不合法反射访问操作
警告:com.google.inject.internal.cglib.core.$ReflectUtils$1 通过反射访问不合法(文件:[用户 Gradle 缓存目录]/modules-2/files-2.1/com.google.inject/guice/[版本哈希]/[guice 版本 jar])
警告:请考虑向 com.google.inject.internal.cglib.core.$ReflectUtils$1 的维护者报告此问题。
警告:使用 –illegal-access=warn 在将来不合法反射访问操作上启用警告。
警告:所有不合法访问操作将在将来的版本中被拒绝。
- Netty 调试消息,如问题 #1410 所述。
11:04:44.477 [main] DEBUG i.n.u.i.PlatformDependent0 - -Dio.netty.noUnsafe: false
11:04:44.477 [main] DEBUG i.n.u.i.PlatformDependent0 - Java 版本:11
11:04:44.479 [main] DEBUG i.n.u.i.PlatformDependent0 - sun.misc.Unsafe.theUnsafe: available
11:04:44.479 [main] DEBUG i.n.u.i.PlatformDependent0 - sun.misc.Unsafe.copyMemory: available
11:04:44.480 [main] DEBUG i.n.u.i.PlatformDependent0 - java.nio.Buffer.address: available
11:04:44.483 [main] DEBUG i.n.u.i.PlatformDependent0 - 直接缓冲区构造函数:unavailable
java.lang.UnsupportedOperationException: 反射 setAccessible(true) 已禁用
at io.netty.util.internal.ReflectionUtil.trySetAccessible(ReflectionUtil.java:31)
at io.netty.util.internal.PlatformDependent0$4.run(PlatformDependent0.java:224)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at io.netty.util.internal.PlatformDependent0.(PlatformDependent0.java:218)
at io.netty.util.internal.PlatformDependent.isAndroid(PlatformDependent.java:212)
at io.netty.util.internal.PlatformDependent.(PlatformDependent.java:80)
at io.netty.util.ConstantPool.(ConstantPool.java:32)
at io.netty.util.AttributeKey$1.(AttributeKey.java:27)
at io.netty.util.AttributeKey.(AttributeKey.java:27)
at ratpack.core.server.internal.DefaultRatpackServer.(DefaultRatpackServer.java:69)
at ratpack.core.server.RatpackServer.of(RatpackServer.java:81)
at ratpack.core.server.RatpackServer.start(RatpackServer.java:92)
at ratpack.groovy.GroovyRatpackMain.main(GroovyRatpackMain.java:38)
11:04:44.484 [main] DEBUG i.n.u.i.PlatformDependent0 - java.nio.Bits.unaligned: available, true
11:04:44.485 [main] DEBUG i.n.u.i.PlatformDependent0 - jdk.internal.misc.Unsafe.allocateUninitializedArray(int): unavailable
java.lang.IllegalAccessException: 类 io.netty.util.internal.PlatformDependent0$6 无法访问类 jdk.internal.misc.Unsafe(在模块 java.base 中),因为模块 java.base 未将 jdk.internal.misc 导出到未命名模块 @366647c2
at java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Reflection.java:361)
at java.base/java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:591)
at java.base/java.lang.reflect.Method.invoke(Method.java:558)
at io.netty.util.internal.PlatformDependent0$6.run(PlatformDependent0.java:334)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at io.netty.util.internal.PlatformDependent0.(PlatformDependent0.java:325)
at io.netty.util.internal.PlatformDependent.isAndroid(PlatformDependent.java:212)
at io.netty.util.internal.PlatformDependent.(PlatformDependent.java:80)
at io.netty.util.ConstantPool.(ConstantPool.java:32)
at io.netty.util.AttributeKey$1.(AttributeKey.java:27)
at io.netty.util.AttributeKey.(AttributeKey.java:27)
at ratpack.core.server.internal.DefaultRatpackServer.(DefaultRatpackServer.java:69)
at ratpack.core.server.RatpackServer.of(RatpackServer.java:81)
at ratpack.core.server.RatpackServer.start(RatpackServer.java:92)
at ratpack.groovy.GroovyRatpackMain.main(GroovyRatpackMain.java:38)
11:04:44.485 [main] DEBUG i.n.u.i.PlatformDependent0 - java.nio.DirectByteBuffer.(long, int): unavailable
11:04:44.485 [main] DEBUG i.n.u.internal.PlatformDependent - sun.misc.Unsafe: available