0

我正在尝试创建一个 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,混合模式,共享)

4

0 回答 0