当我将 Java 模块化添加到我的项目中时,从单元测试中引发了上述异常。我找不到此异常的解决方案。
我已添加到 MAVEN_OPTS
--add-opens java.base/java.lang=ALL-UNNAMED
在surefire插件的配置中也是如此(无济于事),因为以下是堆栈跟踪的一部分:
throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to module com.google.guice
我的项目是一个包含两个模块的 Maven 多项目:
module org.veary.debs.api {
exports org.veary.debs.api;
exports org.veary.debs.api.model;
exports org.veary.debs.api.dao;
}
module org.veary.debs.db {
exports org.veary.debs.db;
requires com.google.guice;
requires com.google.guice.extensions.persist;
requires java.persistence;
requires javax.inject;
requires org.veary.debs.api;
}
这是堆栈跟踪第一部分的片段。任何帮助,将不胜感激。
信息:捕获并报告了异常。消息:java.lang.reflect.InaccessibleObjectException:无法使受保护的最终 java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,by te[],int,int,java.security.ProtectionDomain) 抛出java.lang.ClassFormatError 可访问:模块 java.base 没有“打开 java.lang”到模块 com.google.guice java.lang.IllegalStateException:无法在 com.google.guice@4.2.2/com 加载缓存项。 google.inject.internal.cglib.core.internal.$LoadingCache.createEntry(LoadingCache.java:79) 在 com.google.guice@4.2.2/com.google.inject.internal.cglib.core.internal.$LoadingCache .get(LoadingCache.java:34) 在 com.google.guice@4.2.2/com.google.inject.internal.cglib.core.$AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:116) 在 com.google。