相关疑难解决方法(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万
查看次数

在将构建路径切换到JDK 10之后,Eclipse无法找到与XML相关的类

我正在开发Eclipse中的Maven项目(branch platform-b​​om_brussels-sr7).当我最近尝试切换Java构建路径,为项目JDK 10,Eclipse构建再也找不到类,如javax.xml.xpath.XPath,org.w3c.dom.Documentorg.xml.sax.SAXException.似乎只有XML相关的类受到影响,主要来自Maven依赖xml-apis-1.4.01.

从Eclipse中尝试Maven构建工作没有错误.Ctrl-LeftClick上一个假定缺失的类找到该类并在Eclipse编辑器中打开它.似乎只有Eclipse构建受到影响.

我尝试了几件事,但都没有帮助.我试过了:

  • 项目清洁
  • 不同的Eclipse版本:氧气和光子.
  • 使用JDK 8和JDK 10运行Eclipse本身.
  • 更改项目的编译器合规性级别.它在JDK 8构建路径下以符合级别8和10构建,并且在构建路径中使用JDK 10都失败.

java eclipse maven java-10

29
推荐指数
6
解决办法
1万
查看次数

您在哪里配置Eclipse Java编译器(javac)标志?

防爆.

javac -g ButtMonkey.java
Run Code Online (Sandbox Code Playgroud)

Eclipse编译Java源代码时,在哪里配置-g标志?(使用Ganymede,但我怀疑在以后的版本中有所改变,所以任何答案都可能有所帮助.)

我需要的是:

-G

生成所有调试信息,包括局部变量.默认情况下,仅生成行号和源文件信息.

java eclipse debugging javac

18
推荐指数
1
解决办法
2万
查看次数

标签 统计

java ×3

eclipse ×2

debugging ×1

java-10 ×1

java-9 ×1

javac ×1

maven ×1

reflection ×1