Java Java16 错误:java.lang.reflect.InaccessibleObjectException
Java Error with Java16 : java.lang.reflect.InaccessibleObjectException
现有代码在安装 JDK11 的情况下工作得很好。相同的代码行在 JDK16
中抛出以下错误
java.lang.reflect.InaccessibleObjectException: Unable to make private static native long[] java.util.prefs.WindowsPreferences.WindowsRegOpenKey(long,byte[],int) accessible: module java.prefs does not "opens java.util.prefs" to unnamed module @3f803fae
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357)
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)
at java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
当代码从 Java8 迁移到 Java9 时,WinRegistry.java 文件被一些方法的输入参数修改(s ) 从 int 到 long
Reading/Writing from/to Windows 使用 Advapi32Util.java
注册表更简单
使用这个 JNA APIs 可以轻松读取注册表项、值,还可以使用新的键和值设置注册表。
我使用以下 APIs 来获取注册表项的注册表值,注册表项的路径如下
Advapi32Util.registryGetStringValue(WinReg.HKEY_LOCAL_MACHINE, registry_path, value_of)
此外,可以从下面获取特定路径下的子键API
Advapi32Util.registryGetKeys(HKEY root, String keyPath)
现有代码在安装 JDK11 的情况下工作得很好。相同的代码行在 JDK16
中抛出以下错误java.lang.reflect.InaccessibleObjectException: Unable to make private static native long[] java.util.prefs.WindowsPreferences.WindowsRegOpenKey(long,byte[],int) accessible: module java.prefs does not "opens java.util.prefs" to unnamed module @3f803fae
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357)
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)
at java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
当代码从 Java8 迁移到 Java9 时,WinRegistry.java 文件被一些方法的输入参数修改(s ) 从 int 到 long
Reading/Writing from/to Windows 使用 Advapi32Util.java
注册表更简单使用这个 JNA APIs 可以轻松读取注册表项、值,还可以使用新的键和值设置注册表。
我使用以下 APIs 来获取注册表项的注册表值,注册表项的路径如下
Advapi32Util.registryGetStringValue(WinReg.HKEY_LOCAL_MACHINE, registry_path, value_of)
此外,可以从下面获取特定路径下的子键API
Advapi32Util.registryGetKeys(HKEY root, String keyPath)