Maybe— but there is a downstream compatibility issue. Anyone implementing a 
security check needs to use one JAAS API or the other. The combination matrix 
is too complicated, b/c you can do both API approaches in JDK 21, but not JDK 
17 or JDK 25.  It would create a maint/support nightmare for Karaf contributors 
and provide little to no value to users.

I believe a hard cut and a single path forward is better for users— that is why 
I am suggesting this change goes into a Karaf v5.0.0 instead of v4.5.0.

Matt Pavlovich

> On Aug 28, 2025, at 11:50 AM, Jérémie <jeremie.bre...@gmail.com> wrote:
> 
> Thanks for your answer. As it was mentioned in the release note, I thought it 
> was solved.
> 
> Can't multi-release jar be used to solve this kind of compatibility issue ? 
> 
> joi, 28 aug. 2025, 18:32 Matt Pavlovich <mattr...@apache.org 
> <mailto:mattr...@apache.org>> a scris:
>> Hello Jeremie-
>> 
>> You are running into the JDK breaking change of API changes to the JAAS API. 
>> 
>> The JDK did not provide compatible back porting of the JAAS API changes, so 
>> there will need to be a hard line in Karaf JDK support across releases for 
>> the new JAAS API and JDK 24+ support.
>> 
>> see: https://issues.apache.org/jira/browse/KARAF-7977
>> 
>> I have a proposal on karaf dev mailing list discussing about how to move 
>> forward.
>> 
>> Currently, discussing the following options:
>> 
>> karaf-4.4.x - JDK 11 to JDK 21
>> karaf-4.5.x - JDK 21 to JDK 25
>> karaf-5.x - (based on Minho or other next-gen)
>> 
>> - or -
>> 
>> karaf-4.x - JDK 11 to JDK 21
>> karaf-5.x - (based on karaf-4.x) JDK 21 to JDK 25
>> karaf-6.x - (based on Minho or other next-gen)
>> 
>> Option #2 has better alignment with SEMVER, but doesn’t align with 
>> previously discussed roadmap, so nothing is formalized yet.
>> 
>> Thanks,
>> Matt Pavlovich
>> 
>>> On Aug 28, 2025, at 2:27 AM, Jérémie <jeremie.bre...@gmail.com 
>>> <mailto:jeremie.bre...@gmail.com>> wrote:
>>> 
>>> Hello all,
>>> 
>>> And thanks a lot for the v4.4.8 release. I upgraded my system to this 
>>> version and everything worked as expected.
>>> 
>>> However, I'd like to test the compatibility with JDK24, as I saw in the 
>>> release note, but my pax-exam integration tests failed because of a JAAS 
>>> issue in Felix EventAdmin. Is there something wrong with my packaging, or 
>>> something expected ?
>>> The stack trace below.
>>> 
>>> Regards,
>>> Jérémie
>>> 
>>> org.apache.karaf.services.eventadmin [Events.Framework] ERROR : 
>>> FrameworkEvent ERROR
>>> java.lang.UnsupportedOperationException: getSubject is not supported
>>>     at java.base/javax.security.auth.Subject.getSubject(Subject.java:277)
>>>     at 
>>> org.apache.felix.eventadmin.impl.handler.EventAdminImpl.prepareEvent(EventAdminImpl.java:146)
>>>     at 
>>> org.apache.felix.eventadmin.impl.handler.EventAdminImpl.postEvent(EventAdminImpl.java:180)
>>>     at 
>>> org.apache.felix.eventadmin.impl.adapter.BundleEventAdapter.bundleChanged(BundleEventAdapter.java:121)
>>>     at 
>>> org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:949)
>>>     at 
>>> org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234)
>>>     at 
>>> org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151)
>>>     at 
>>> org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:229)
>>>     at 
>>> org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:138)
>>>     at 
>>> org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:130)
>>>     at 
>>> org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:217)
>>>     at org.eclipse.osgi.container.Module.publishEvent(Module.java:499)
>>>     at org.eclipse.osgi.container.Module.doStop(Module.java:658)
>>>     at org.eclipse.osgi.container.Module.stop(Module.java:521)
>>>     at 
>>> org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.decStartLevel(ModuleContainer.java:1888)
>>>     at 
>>> org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1763)
>>>     at 
>>> org.eclipse.osgi.container.SystemModule.stopWorker(SystemModule.java:275)
>>>     at 
>>> org.eclipse.osgi.internal.framework.EquinoxBundle$SystemBundle$EquinoxSystemModule.stopWorker(EquinoxBundle.java:208)
>>>     at org.eclipse.osgi.container.Module.doStop(Module.java:660)
>>>     at org.eclipse.osgi.container.Module.stop(Module.java:521)
>>>     at org.eclipse.osgi.container.SystemModule.stop(SystemModule.java:207)
>>>     at 
>>> org.eclipse.osgi.internal.framework.EquinoxBundle$SystemBundle$EquinoxSystemModule$1.run(EquinoxBundle.java:226)
>>>     at java.base/java.lang.Thread.run(Thread.java:1447)
>> 

Reply via email to