0

I'm trying to create a java container, but I'm getting the below exception:

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)***

My code that is generating the exception:

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 version: openjdk version "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, mixed mode, sharing)

BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555

0 Answers0