Lucee 6.2 / Java 21 IllegalAccessError unnamed module of loader

We are trying to migrate to Lucee 6.2 with the lucee/lucee:6.2.2.91-nginx-tomcat11.0-jdk21-temurin-noble container as a base image. In the dockerfile we download the AWS SDK into /usr/local/tomcat/lib/ before trying to use it. The code using it is:

		var receiveMessageRequestObj = createObject("java", "software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest").builder();
		receiveMessageRequestObj.setQueueUrl(arguments.queueUrl);
		receiveMessageRequestObj.setMaxNumberOfMessages(arguments.maxNumberOfMessages);
		receiveMessageRequestObj.setWaitTimeSeconds(arguments.waitTimeSeconds);
		var receiveMessageRequest = receiveMessageRequestObj.build();

This worked fine on lucee:5.3.8.237-light-nginx-tomcat9.0-jdk11-temurin-jammy, but now we are getting the following error:

"ERROR","cfthread-0","09/25/2025","08:10:26","dynamic","failed to access class software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl from class lucee.invoc.wrap.v4.software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl.setQueueUrl_1ohgdbv88suv8 (software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl is in unnamed module of loader java.net.URLClassLoader @5e8c92f4; lucee.invoc.wrap.v4.software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl.setQueueUrl_1ohgdbv88suv8 is in unnamed module of loader lucee.transformer.dynamic.DynamicClassLoader @757fcb48);java.lang.IllegalAccessError: failed to access class software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl from class lucee.invoc.wrap.v4.software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl.setQueueUrl_1ohgdbv88suv8 (software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl is in unnamed module of loader java.net.URLClassLoader @5e8c92f4; lucee.invoc.wrap.v4.software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl.setQueueUrl_1ohgdbv88suv8 is in unnamed module of loader lucee.transformer.dynamic.DynamicClassLoader @757fcb48)
	at lucee.invoc.wrap.v4.software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl.setQueueUrl_1ohgdbv88suv8.apply(Unknown Source)
	at lucee.runtime.reflection.pairs.MethodInstance.invoke(MethodInstance.java:98)
	at lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:824)
	at lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:2081)
	at applicatie.model.cfc.aws.sqs_cfc$cf.udfCall(/applicatie/model/cfc/aws/SQS.cfc:10)
  ...

I understand this is related to OSGI limiting the visibility of JARs, but according to Lucee Classloader not finding all system classes - #2 by micstriit that should not apply to createObject() which should see all classloaders.

Any suggestions on fixing this?

1 Like

Try 6.2.3 or 7 RC maybe? We have been working on some related problems

Will try.

Might it be related that we run this in a background thread?

I’m getting the same error with:
6.2.3.35-SNAPSHOT-nginx-tomcat11.0-jdk21-temurin-noble
7.0.1.6-SNAPSHOT-nginx-tomcat11.0-jdk21-temurin-noble

hmmm, did you try the newer cfc approach?

This is the reproduction I have with the new maven usage:

component displayname="Application" output=true {
	this.name = "sqs";
	public boolean function onRequestStart(string targetPage) output=true {
		if(url.keyExists("sqs")) {
			var sqs = new SQS();
			writeDump(var=sqs, expand=false);
			writeDump(var=sqs.getSQSClient(), expand=false);
			writeDump(var=sqs.getQueues(), expand=false);
			var queueUrls = sqs.getQueues().queueUrls();
			writeDump(var=queueUrls);
			writeDump(var=sqs.getMessages(queueUrls.get(0), 5, 5));
		}
		writeOutput("OK");
		abort;
	}
}

And the SQS code:

component javaSettings = '{
  "maven": [
    {
      "groupId": "software.amazon.awssdk",
      "artifactId": "sqs",
      "version": "2.32.26"
    }
  ]
}' {
import software.amazon.awssdk.services.sqs.SqsClient;
import software.amazon.awssdk.services.sqs.model.ListQueuesRequest;
import software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest;
import software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest.Builder;

	public SQS function init() {
		this.sqsClient = SqsClient::builder().build();
		return this;
	}

	public any function getQueues() {
		var listQueuesRequest = ListQueuesRequest::builder().build();
        return this.sqsClient.listQueues(listQueuesRequest);
	}

	public any function getMessages(required string queueUrl, numeric maxNumberOfMessages=5, numeric waitTimeSeconds=20) {
		var receiveMessageRequestBuilder = ReceiveMessageRequest::builder();
		receiveMessageRequestBuilder.setQueueUrl(arguments.queueUrl);
		receiveMessageRequestBuilder.setMaxNumberOfMessages(arguments.maxNumberOfMessages);
		receiveMessageRequestBuilder.setWaitTimeSeconds(arguments.waitTimeSeconds);
		var receiveMessageRequest = receiveMessageRequestBuilder.build();
		return this.sqsClient.receiveMessage(receiveMessageRequest).messages();
	}

	public any function getSQSClient() {
		return this.sqsClient;
	}

}

The code technically ‘works’, it retrieves data from SQS. But it should be possible to chain the message request as:

var receiveMessageRequest = ReceiveMessageRequest::builder()
	.setQueueUrl(arguments.queueUrl)
	setMaxNumberOfMessages(arguments.maxNumberOfMessages)
	setWaitTimeSeconds(arguments.waitTimeSeconds)
	.build();

If I try that I get an error that setMaxNumberOfMessages() is not found. That seems to be actually rooted in the ReceiveMessageRequest$BuilderImpl because on every iteration of this code it logs the following:

2025-10-02 15:22:54.537 | "ERROR","http-nio-8888-exec-1","10/02/2025","13:22:54","dynamic","failed to access class software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl from class lucee.invoc.wrap.v4.software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl.setQueueUrl_1ohgdbv88suv8 (software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl is in unnamed module of loader java.net.URLClassLoader @5e8c92f4; lucee.invoc.wrap.v4.software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl.setQueueUrl_1ohgdbv88suv8 is in unnamed module of loader lucee.transformer.dynamic.DynamicClassLoader @3ec24da);java.lang.IllegalAccessError: failed to access class software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl from class lucee.invoc.wrap.v4.software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl.setQueueUrl_1ohgdbv88suv8 (software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl is in unnamed module of loader java.net.URLClassLoader @5e8c92f4; lucee.invoc.wrap.v4.software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl.setQueueUrl_1ohgdbv88suv8 is in unnamed module of loader lucee.transformer.dynamic.DynamicClassLoader @3ec24da)
2025-10-02 15:22:54.537 | 	at lucee.invoc.wrap.v4.software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl.setQueueUrl_1ohgdbv88suv8.apply(Unknown Source)
2025-10-02 15:22:54.537 | 	at lucee.runtime.reflection.pairs.MethodInstance.invoke(MethodInstance.java:98)
2025-10-02 15:22:54.537 | 	at lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:824)
2025-10-02 15:22:54.537 | 	at lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:2081)
2025-10-02 15:22:54.537 | 	at sqs_cfc$cf.udfCall(/SQS.cfc:27)
2025-10-02 15:22:54.537 | 	at lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:112)
2025-10-02 15:22:54.537 | 	at lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)
2025-10-02 15:22:54.537 | 	at lucee.runtime.type.UDFImpl.call(UDFImpl.java:224)
2025-10-02 15:22:54.537 | 	at lucee.runtime.ComponentImpl._call(ComponentImpl.java:731)
2025-10-02 15:22:54.537 | 	at lucee.runtime.ComponentImpl._call(ComponentImpl.java:604)
2025-10-02 15:22:54.537 | 	at lucee.runtime.ComponentImpl.call(ComponentImpl.java:2110)
2025-10-02 15:22:54.537 | 	at lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:773)
2025-10-02 15:22:54.537 | 	at lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:2081)
2025-10-02 15:22:54.537 | 	at application_cfc$cf.udfCall(/Application.cfc:13)
2025-10-02 15:22:54.537 | 	at lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:112)
2025-10-02 15:22:54.537 | 	at lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)
2025-10-02 15:22:54.537 | 	at lucee.runtime.type.UDFImpl.call(UDFImpl.java:224)
2025-10-02 15:22:54.537 | 	at lucee.runtime.ComponentImpl._call(ComponentImpl.java:731)
2025-10-02 15:22:54.537 | 	at lucee.runtime.ComponentImpl._call(ComponentImpl.java:604)
2025-10-02 15:22:54.537 | 	at lucee.runtime.ComponentImpl.call(ComponentImpl.java:2110)
2025-10-02 15:22:54.537 | 	at lucee.runtime.listener.ModernAppListener.call(ModernAppListener.java:477)
2025-10-02 15:22:54.537 | 	at lucee.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:129)
2025-10-02 15:22:54.537 | 	at lucee.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:41)
2025-10-02 15:22:54.537 | 	at lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2816)
2025-10-02 15:22:54.537 | 	at lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2803)
2025-10-02 15:22:54.537 | 	at lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2774)
2025-10-02 15:22:54.537 | 	at lucee.runtime.engine.Request.exe(Request.java:45)
2025-10-02 15:22:54.537 | 	at lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1113)
2025-10-02 15:22:54.537 | 	at lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1070)
2025-10-02 15:22:54.537 | 	at lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:97)
2025-10-02 15:22:54.537 | 	at lucee.loader.servlet.jakarta.CFMLServlet.service(CFMLServlet.java:52)
2025-10-02 15:22:54.537 | 	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)
2025-10-02 15:22:54.537 | 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:130)
2025-10-02 15:22:54.537 | 	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
2025-10-02 15:22:54.537 | 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:109)
2025-10-02 15:22:54.537 | 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
2025-10-02 15:22:54.537 | 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:79)
2025-10-02 15:22:54.537 | 	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483)
2025-10-02 15:22:54.537 | 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:116)
2025-10-02 15:22:54.537 | 	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:666)
2025-10-02 15:22:54.537 | 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
2025-10-02 15:22:54.537 | 	at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:718)
2025-10-02 15:22:54.537 | 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
2025-10-02 15:22:54.537 | 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
2025-10-02 15:22:54.537 | 	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:396)
2025-10-02 15:22:54.537 | 	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
2025-10-02 15:22:54.537 | 	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903)
2025-10-02 15:22:54.537 | 	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1773)
2025-10-02 15:22:54.537 | 	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
2025-10-02 15:22:54.537 | 	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
2025-10-02 15:22:54.537 | 	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
2025-10-02 15:22:54.537 | 	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:59)
2025-10-02 15:22:54.537 | 	at java.base/java.lang.Thread.run(Thread.java:1583)
2025-10-02 15:22:54.538 | "
2025-10-02 15:22:54.538 | "ERROR","http-nio-8888-exec-1","10/02/2025","13:22:54","dynamic","failed to access class software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl from class lucee.invoc.wrap.v4.software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl.setMaxNumberOfMessages_ip298tnxrm0z (software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl is in unnamed module of loader java.net.URLClassLoader @5e8c92f4; lucee.invoc.wrap.v4.software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl.setMaxNumberOfMessages_ip298tnxrm0z is in unnamed module of loader lucee.transformer.dynamic.DynamicClassLoader @3ec24da);java.lang.IllegalAccessError: failed to access class software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl from class lucee.invoc.wrap.v4.software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl.setMaxNumberOfMessages_ip298tnxrm0z (software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl is in unnamed module of loader java.net.URLClassLoader @5e8c92f4; lucee.invoc.wrap.v4.software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl.setMaxNumberOfMessages_ip298tnxrm0z is in unnamed module of loader lucee.transformer.dynamic.DynamicClassLoader @3ec24da)
2025-10-02 15:22:54.538 | 	at lucee.invoc.wrap.v4.software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl.setMaxNumberOfMessages_ip298tnxrm0z.apply(Unknown Source)
2025-10-02 15:22:54.538 | 	at lucee.runtime.reflection.pairs.MethodInstance.invoke(MethodInstance.java:98)
2025-10-02 15:22:54.538 | 	at lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:824)
2025-10-02 15:22:54.538 | 	at lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:2081)
2025-10-02 15:22:54.538 | 	at sqs_cfc$cf.udfCall(/SQS.cfc:28)
2025-10-02 15:22:54.538 | 	at lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:112)
2025-10-02 15:22:54.538 | 	at lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)
2025-10-02 15:22:54.538 | 	at lucee.runtime.type.UDFImpl.call(UDFImpl.java:224)
2025-10-02 15:22:54.538 | 	at lucee.runtime.ComponentImpl._call(ComponentImpl.java:731)
2025-10-02 15:22:54.538 | 	at lucee.runtime.ComponentImpl._call(ComponentImpl.java:604)
2025-10-02 15:22:54.538 | 	at lucee.runtime.ComponentImpl.call(ComponentImpl.java:2110)
2025-10-02 15:22:54.538 | 	at lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:773)
2025-10-02 15:22:54.538 | 	at lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:2081)
2025-10-02 15:22:54.538 | 	at application_cfc$cf.udfCall(/Application.cfc:13)
2025-10-02 15:22:54.538 | 	at lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:112)
2025-10-02 15:22:54.538 | 	at lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)
2025-10-02 15:22:54.538 | 	at lucee.runtime.type.UDFImpl.call(UDFImpl.java:224)
2025-10-02 15:22:54.538 | 	at lucee.runtime.ComponentImpl._call(ComponentImpl.java:731)
2025-10-02 15:22:54.538 | 	at lucee.runtime.ComponentImpl._call(ComponentImpl.java:604)
2025-10-02 15:22:54.538 | 	at lucee.runtime.ComponentImpl.call(ComponentImpl.java:2110)
2025-10-02 15:22:54.538 | 	at lucee.runtime.listener.ModernAppListener.call(ModernAppListener.java:477)
2025-10-02 15:22:54.538 | 	at lucee.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:129)
2025-10-02 15:22:54.538 | 	at lucee.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:41)
2025-10-02 15:22:54.538 | 	at lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2816)
2025-10-02 15:22:54.538 | 	at lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2803)
2025-10-02 15:22:54.538 | 	at lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2774)
2025-10-02 15:22:54.538 | 	at lucee.runtime.engine.Request.exe(Request.java:45)
2025-10-02 15:22:54.538 | 	at lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1113)
2025-10-02 15:22:54.538 | 	at lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1070)
2025-10-02 15:22:54.538 | 	at lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:97)
2025-10-02 15:22:54.538 | 	at lucee.loader.servlet.jakarta.CFMLServlet.service(CFMLServlet.java:52)
2025-10-02 15:22:54.538 | 	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)
2025-10-02 15:22:54.538 | 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:130)
2025-10-02 15:22:54.538 | 	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
2025-10-02 15:22:54.538 | 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:109)
2025-10-02 15:22:54.538 | 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
2025-10-02 15:22:54.538 | 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:79)
2025-10-02 15:22:54.538 | 	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483)
2025-10-02 15:22:54.538 | 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:116)
2025-10-02 15:22:54.538 | 	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:666)
2025-10-02 15:22:54.538 | 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
2025-10-02 15:22:54.538 | 	at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:718)
2025-10-02 15:22:54.538 | 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
2025-10-02 15:22:54.538 | 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
2025-10-02 15:22:54.538 | 	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:396)
2025-10-02 15:22:54.538 | 	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
2025-10-02 15:22:54.538 | 	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903)
2025-10-02 15:22:54.538 | 	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1773)
2025-10-02 15:22:54.538 | 	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
2025-10-02 15:22:54.538 | 	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
2025-10-02 15:22:54.538 | 	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
2025-10-02 15:22:54.538 | 	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:59)
2025-10-02 15:22:54.538 | 	at java.base/java.lang.Thread.run(Thread.java:1583)
2025-10-02 15:22:54.538 | "
2025-10-02 15:22:54.538 | "ERROR","http-nio-8888-exec-1","10/02/2025","13:22:54","dynamic","failed to access class software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl from class lucee.invoc.wrap.v4.software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl.setWaitTimeSeconds_ip298tnxrm0z (software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl is in unnamed module of loader java.net.URLClassLoader @5e8c92f4; lucee.invoc.wrap.v4.software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl.setWaitTimeSeconds_ip298tnxrm0z is in unnamed module of loader lucee.transformer.dynamic.DynamicClassLoader @3ec24da);java.lang.IllegalAccessError: failed to access class software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl from class lucee.invoc.wrap.v4.software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl.setWaitTimeSeconds_ip298tnxrm0z (software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl is in unnamed module of loader java.net.URLClassLoader @5e8c92f4; lucee.invoc.wrap.v4.software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl.setWaitTimeSeconds_ip298tnxrm0z is in unnamed module of loader lucee.transformer.dynamic.DynamicClassLoader @3ec24da)
2025-10-02 15:22:54.538 | 	at lucee.invoc.wrap.v4.software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest$BuilderImpl.setWaitTimeSeconds_ip298tnxrm0z.apply(Unknown Source)
2025-10-02 15:22:54.538 | 	at lucee.runtime.reflection.pairs.MethodInstance.invoke(MethodInstance.java:98)
2025-10-02 15:22:54.538 | 	at lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:824)
2025-10-02 15:22:54.538 | 	at lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:2081)
2025-10-02 15:22:54.538 | 	at sqs_cfc$cf.udfCall(/SQS.cfc:29)
2025-10-02 15:22:54.538 | 	at lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:112)
2025-10-02 15:22:54.538 | 	at lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)
2025-10-02 15:22:54.538 | 	at lucee.runtime.type.UDFImpl.call(UDFImpl.java:224)
2025-10-02 15:22:54.538 | 	at lucee.runtime.ComponentImpl._call(ComponentImpl.java:731)
2025-10-02 15:22:54.538 | 	at lucee.runtime.ComponentImpl._call(ComponentImpl.java:604)
2025-10-02 15:22:54.538 | 	at lucee.runtime.ComponentImpl.call(ComponentImpl.java:2110)
2025-10-02 15:22:54.538 | 	at lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:773)
2025-10-02 15:22:54.538 | 	at lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:2081)
2025-10-02 15:22:54.538 | 	at application_cfc$cf.udfCall(/Application.cfc:13)
2025-10-02 15:22:54.538 | 	at lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:112)
2025-10-02 15:22:54.538 | 	at lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)
2025-10-02 15:22:54.538 | 	at lucee.runtime.type.UDFImpl.call(UDFImpl.java:224)
2025-10-02 15:22:54.538 | 	at lucee.runtime.ComponentImpl._call(ComponentImpl.java:731)
2025-10-02 15:22:54.538 | 	at lucee.runtime.ComponentImpl._call(ComponentImpl.java:604)
2025-10-02 15:22:54.538 | 	at lucee.runtime.ComponentImpl.call(ComponentImpl.java:2110)
2025-10-02 15:22:54.538 | 	at lucee.runtime.listener.ModernAppListener.call(ModernAppListener.java:477)
2025-10-02 15:22:54.538 | 	at lucee.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:129)
2025-10-02 15:22:54.538 | 	at lucee.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:41)
2025-10-02 15:22:54.538 | 	at lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2816)
2025-10-02 15:22:54.538 | 	at lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2803)
2025-10-02 15:22:54.538 | 	at lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2774)
2025-10-02 15:22:54.538 | 	at lucee.runtime.engine.Request.exe(Request.java:45)
2025-10-02 15:22:54.538 | 	at lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1113)
2025-10-02 15:22:54.538 | 	at lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1070)
2025-10-02 15:22:54.538 | 	at lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:97)
2025-10-02 15:22:54.538 | 	at lucee.loader.servlet.jakarta.CFMLServlet.service(CFMLServlet.java:52)
2025-10-02 15:22:54.538 | 	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)
2025-10-02 15:22:54.538 | 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:130)
2025-10-02 15:22:54.538 | 	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
2025-10-02 15:22:54.538 | 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:109)
2025-10-02 15:22:54.538 | 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
2025-10-02 15:22:54.538 | 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:79)
2025-10-02 15:22:54.538 | 	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483)
2025-10-02 15:22:54.538 | 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:116)
2025-10-02 15:22:54.538 | 	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:666)
2025-10-02 15:22:54.538 | 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
2025-10-02 15:22:54.538 | 	at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:718)
2025-10-02 15:22:54.538 | 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
2025-10-02 15:22:54.538 | 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
2025-10-02 15:22:54.538 | 	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:396)
2025-10-02 15:22:54.538 | 	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
2025-10-02 15:22:54.538 | 	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903)
2025-10-02 15:22:54.538 | 	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1773)
2025-10-02 15:22:54.538 | 	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
2025-10-02 15:22:54.538 | 	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
2025-10-02 15:22:54.538 | 	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
2025-10-02 15:22:54.538 | 	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:59)
2025-10-02 15:22:54.538 | 	at java.base/java.lang.Thread.run(Thread.java:1583)
2025-10-02 15:22:54.538 | "

I am curious about the underlying issue, but just suppressing this logging would make it workable for us with the non-chained builder.

Does the following syntax work better?

var receiveMessageRequest = ReceiveMessageRequest::builder()
	.setQueueUrl(arguments.queueUrl)
	.setMaxNumberOfMessages(arguments.maxNumberOfMessages)
	.setWaitTimeSeconds(arguments.waitTimeSeconds)
	.build();

We are running into the same issue using the msal4j library to use for SSO integration. Also an IllegalAccessException with a builder class.

I’ve tested on local commandbox servers running Lucee 6.2.4.24, 7.0.1.100 and latest 7 snapshot (7.1.0-ALPHA.34), all on java version openjdk21_jdk_x64_hotspot. Running locally via commandbox on windows. Reduced it down to a reproduceable example, using the new maven features (really cool!):

msal.cfc:

component
	output="false"
	javaSettings = '{
		"maven" : [
			"com.microsoft.azure:msal4j:1.23.1"
		]
	}'
 {

	import com.microsoft.aad.msal4j.ClientCredentialFactory;
	import com.microsoft.aad.msal4j.ConfidentialClientApplication;

	public any function buildConfidentialClientApplication() {
		// Create IClientCredential using ClientCredentialFactory
		var clientCredential = ClientCredentialFactory::createFromSecret("super_secret_value_here");

		// Build ConfidentialClientApplication
		var app = ConfidentialClientApplication::builder("client_id_here", clientCredential)
		.authority("https://login.microsoftonline.com/respect_my_authority")
		.build();

		return app;
	}


}

with an cfm page that just calls the method:

<cfscript>
    writeLog('created msal instance');
    foo = new msal();

    writeLog('creating confidential client application');
    app = foo.buildConfidentialClientApplication();

    writeDump( var=app, output="browser", abort="true");
</cfscript>

The error logged silently is:

"ERROR","XNIO-1 task-2","01/28/2026","14:35:39","http://scribble.local:62965","dynamic","class lucee.invoc.wrap.v4.com.microsoft.aad.msal4j.ConfidentialClientApplication$Builder.build tried to access abstract method 'com.microsoft.aad.msal4j.AbstractApplicationBase com.microsoft.aad.msal4j.AbstractApplicationBase$Builder.build()' (lucee.invoc.wrap.v4.com.microsoft.aad.msal4j.ConfidentialClientApplication$Builder.build is in unnamed module of loader lucee.transformer.dynamic.DynamicClassLoader @2357f286; com.microsoft.aad.msal4j.AbstractApplicationBase$Builder is in unnamed module of loader lucee.commons.lang.PhysicalClassLoader @66b58b11)java.lang.IllegalAccessError: class lucee.invoc.wrap.v4.com.microsoft.aad.msal4j.ConfidentialClientApplication$Builder.build tried to access abstract method 'com.microsoft.aad.msal4j.AbstractApplicationBase com.microsoft.aad.msal4j.AbstractApplicationBase$Builder.build()' (lucee.invoc.wrap.v4.com.microsoft.aad.msal4j.ConfidentialClientApplication$Builder.build is in unnamed module of loader lucee.transformer.dynamic.DynamicClassLoader @2357f286; com.microsoft.aad.msal4j.AbstractApplicationBase$Builder is in unnamed module of loader lucee.commons.lang.PhysicalClassLoader @66b58b11)
        at lucee.invoc.wrap.v4.com.microsoft.aad.msal4j.ConfidentialClientApplication$Builder.build.apply(Unknown Source)
        at lucee.runtime.reflection.pairs.MethodInstance.invoke(MethodInstance.java:98)
        at lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:824)
        at lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:2075)
        at msal.msal_cfc$cf$8.udfCall(/msal/msal.cfc:21)
        at lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:116)
        at lucee.runtime.type.UDFImpl._call(UDFImpl.java:361)
        at lucee.runtime.type.UDFImpl.call(UDFImpl.java:228)
        at lucee.runtime.ComponentImpl._call(ComponentImpl.java:842)
        at lucee.runtime.ComponentImpl._call(ComponentImpl.java:709)
        at lucee.runtime.ComponentImpl.call(ComponentImpl.java:2259)
        at lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:773)
        at lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:2075)
        at msal.index_cfm$cf.call(/msal/index.cfm:6)
        at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:1114)
        at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:1008)
        at lucee.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:239)
        at lucee.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:43)
        at lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2806)
        at lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2793)
        at lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2764)
        at lucee.runtime.engine.Request.exe(Request.java:45)
        at lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1174)
        at lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1131)
        at lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:99)
        at lucee.loader.servlet.jakarta.CFMLServlet.service(CFMLServlet.java:41)
        at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:614)
        at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
        at runwar.servlet.RegexPathInfoFilter.doFilter(RegexPathInfoFilter.java:57)
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
        at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
        at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
        at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
        at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
        at runwar.undertow.SSLCertHeaderHandler.handleRequest(SSLCertHeaderHandler.java:171)
        at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
        at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)
        at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
        at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
        at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
        at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:75)
        at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:271)
        at io.undertow.servlet.handlers.ServletInitialHandler$1.call(ServletInitialHandler.java:130)
        at io.undertow.servlet.handlers.ServletInitialHandler$1.call(ServletInitialHandler.java:127)
        at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
        at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
        at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:251)
        at io.undertow.servlet.handlers.ServletInitialHandler.handleRequest(ServletInitialHandler.java:171)
        at io.undertow.server.handlers.HttpContinueReadHandler.handleRequest(HttpContinueReadHandler.java:69)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at runwar.undertow.WelcomeFileHandler.handleRequest(WelcomeFileHandler.java:49)
        at io.undertow.server.handlers.PathHandler.handleRequest(PathHandler.java:104)
        at runwar.undertow.SiteDeployment$1.handleRequest(SiteDeployment.java:169)
        at io.undertow.predicate.PredicatesHandler.handleRequest(PredicatesHandler.java:141)
        at io.undertow.server.handlers.DisallowedMethodsHandler.handleRequest(DisallowedMethodsHandler.java:62)
        at io.undertow.predicate.PredicatesHandler.handleRequest(PredicatesHandler.java:113)
        at io.undertow.server.handlers.encoding.EncodingHandler.handleRequest(EncodingHandler.java:72)
        at runwar.undertow.LifecyleHandler.handleRequest(LifecyleHandler.java:150)
        at runwar.undertow.SiteDeployment$4.handleRequest(SiteDeployment.java:360)
        at io.undertow.server.Connectors.executeRootHandler(Connectors.java:395)
        at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:900)
        at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
        at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2691)
        at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2670)
        at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1615)
        at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)
        at java.base/java.lang.Thread.run(Thread.java:1583)

I have not been able to find any workarounds.

Nice bug report! bug filed

https://luceeserver.atlassian.net/browse/LDEV-6084

1 Like

@beloitdavisja can you try the latest 7.0.2 snapshot?

@micstriit fixed it as part of the work on LDEV-6107

1 Like

@Zackster looks good on 7.0.2-SNAPSHOT+104

Thanks!

1 Like