相关疑难解决方法(0)

如何解决InaccessibleObjectException("无法使{member}可访问:模块{A}在Java 9上没有'打开{package}'到{B}")?

在Java 9上运行应用程序时,在各种情况下都会发生此异常.某些库和框架(Spring,Hibernate,JAXB)特别容易出现这种情况.这是Javassist的一个例子:

java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @1941a8ff
    at java.base/jdk.internal.reflect.Reflection.throwInaccessibleObjectException(Reflection.java:427)
    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:201)
    at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:192)
    at java.base/java.lang.reflect.Method.setAccessible(Method.java:186)
    at javassist.util.proxy.SecurityActions.setAccessible(SecurityActions.java:102)
    at javassist.util.proxy.FactoryHelper.toClass2(FactoryHelper.java:180)
    at javassist.util.proxy.FactoryHelper.toClass(FactoryHelper.java:163)
    at javassist.util.proxy.ProxyFactory.createClass3(ProxyFactory.java:501)
    at javassist.util.proxy.ProxyFactory.createClass2(ProxyFactory.java:486)
    at javassist.util.proxy.ProxyFactory.createClass1(ProxyFactory.java:422)
    at javassist.util.proxy.ProxyFactory.createClass(ProxyFactory.java:394)
Run Code Online (Sandbox Code Playgroud)

消息说:

无法使受保护的最终java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte [],int,int,java.security.ProtectionDomain)抛出java.lang.ClassFormatError可访问:module java.base没有"打开java.lang"到未命名的模块@ 1941a8ff

可以做些什么来避免异常并使程序成功运行?

java reflection java-9

52
推荐指数
9
解决办法
2万
查看次数

无法使字段 private Final java.lang.String java.io.File.path 可访问

无法使字段 private Final java.lang.String java.io.File.path 可访问:模块 java.base 不会向未命名模块“打开 java.io”@​​786f3609 在此输入图像描述

android-studio

19
推荐指数
3
解决办法
4万
查看次数

如何修复 Android Studio 中的“模块 java.base 不会“打开 java.io”到未命名模块的“错误”?

背景

  1. 我在 android studio 开始了我的第一个项目,以熟悉 Android 编程。
  2. 我正在关注本教程,其中
  • 我创建了一个新项目 Empty Activity,没有任何更改
  • 它应该模拟一个显示“Hello World”消息的简单应用程序

问题描述 但是每次我尝试运行和构建(我现在想要模拟器)时,我都会收到以下错误消息。

Unable to make field private final java.lang.String java.io.File.path accessible:
Unable to make field private final java.lang.String java.io.File.path
accessible: module java.base does not "opens java.io" to unnamed module @42760a00
Run Code Online (Sandbox Code Playgroud)

这是我的配置设置:

  1. Android Gradle 插件版本:4.2.1
  2. Gradle 版本:7.0.1(更改为解决我在同步 Gradle 时遇到的另一个问题(“Gradle 同步失败:不支持的类文件主要版本 60”)和基于此论坛上的讨论,如下所述)

Andrey Dernov 评论 2021 年 4 月 14 日 00:18 请使用 Gradle 7.0 或低于 16 版本的 JDK 来导入和构建项目(设置(macOS 上的首选项)| 构建、执行、部署 | 构建工具 …

java android android-studio

10
推荐指数
15
解决办法
1万
查看次数

标签 统计

android-studio ×2

java ×2

android ×1

java-9 ×1

reflection ×1