我正在尝试创建一个 java 容器,但出现以下异常:
Dec 05, 2021 11:33:36 AM org.jboss.weld.bootstrap.WeldStartup <clinit>
INFO: WELD-000900: 3.1.0 (Final)
Exception in thread "main" java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @5f8754e
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
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)
at org.jboss.weld.util.bytecode.ClassFileUtils$1.run(ClassFileUtils.java:88)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:569)
at org.jboss.weld.util.bytecode.ClassFileUtils.makeClassLoaderMethodsAccessible(ClassFileUtils.java:64)
at org.jboss.weld.bootstrap.WeldStartup.startContainer(WeldStartup.java:220)
at org.jboss.weld.bootstrap.WeldBootstrap.startContainer(WeldBootstrap.java:72)
at org.jboss.weld.environment.se.Weld.initialize(Weld.java:797)
at org.jboss.weld.environment.se.Weld.initialize(Weld.java:176)
at user_pack.OrderedObserver.main(OrderedObserver.java:13)***
我产生异常的代码:
import javax.annotation.Priority;
import javax.enterprise.event.Observes;
import javax.enterprise.inject.se.SeContainer;
import javax.enterprise.inject.se.SeContainerInitializer;
import javax.interceptor.Interceptor;
public class OrderedObserver {
public static void main(String[] args) {
try (SeContainer container = SeContainerInitializer.newInstance().initialize()) {
container.getBeanManager().fireEvent(new MyEvent("event: " + System.currentTimeMillis()));
}
}
public void thisEventBefore(
@Observes @Priority(Interceptor.Priority.APPLICATION - 200)
MyEvent event) {
System.out.println("thisEventBefore: " + event.getValue());
}
public void thisEventAfter(
@Observes @Priority(Interceptor.Priority.APPLICATION + 200)
MyEvent event) {
System.out.println("thisEventAfter: " + event.getValue());
}
}
Java版本:openjdk版本“17.0.1” 2021-10-19 OpenJDK Runtime Environment 21.9(build 17.0.1+12) OpenJDK 64-Bit Server VM 21.9(build 17.0.1+12,混合模式,共享)