It's what I said: Karaf itself works fine with JDK17+, however, third parties (like Aries Blueprint & Aries Proxy) are not yet compatible. I'm preparing new Aries releases to support this (including ASM 9.6 update, etc, for JDK17+).
Regards JB On Tue, Nov 28, 2023 at 2:59 PM Bengt Rodehav <be...@rodehav.com> wrote: > > I now compile for Java 17 (not 21 like I tried first). I use Karaf 4.4.4. I > get the following exception when running on OpenJDK 21: > > 2023-11-28T14:28:12,731 | ERROR | Blueprint Extender: 1 | > BlueprintContainerImpl | 28 - org.apache.aries.blueprint.core - > 1.10.3 | Unable to start container for blueprint bundle > se.digia.bundles.jqueryui_1_8_16/7.0.0 > org.osgi.service.blueprint.container.ComponentDefinitionException: > java.lang.IllegalArgumentException: Invalid Java version 65 > at > org.apache.aries.blueprint.container.ReferenceRecipe.internalCreate(ReferenceRecipe.java:141) > ~[?:?] > at > org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:81) > ~[?:?] > at java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[?:?] > at > org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:90) > ~[?:?] > at > org.apache.aries.blueprint.container.BeanRecipe.setProperty(BeanRecipe.java:810) > ~[?:?] > at > org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:784) > ~[?:?] > at > org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:765) > ~[?:?] > at > org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:699) > ~[?:?] > at > org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:666) > ~[?:?] > at > org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:81) > ~[?:?] > at java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[?:?] > at > org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:90) > ~[?:?] > at > org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:360) > ~[?:?] > at > org.apache.aries.blueprint.container.BlueprintRepository.createInstance(BlueprintRepository.java:338) > ~[?:?] > at > org.apache.aries.blueprint.container.BlueprintRepository.create(BlueprintRepository.java:162) > ~[?:?] > at > org.apache.aries.blueprint.container.BlueprintContainerImpl.processProcessors(BlueprintContainerImpl.java:572) > ~[?:?] > at > org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:417) > ~[?:?] > at > org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:298) > ~[?:?] > at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) > ~[?:?] > at java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[?:?] > at > org.apache.aries.blueprint.container.ExecutorServiceWrapper.run(ExecutorServiceWrapper.java:106) > ~[?:?] > at > org.apache.aries.blueprint.utils.threading.impl.DiscardableRunnable.run(DiscardableRunnable.java:45) > ~[?:?] > at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) > ~[?:?] > at java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[?:?] > at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) > ~[?:?] > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) > ~[?:?] > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) > ~[?:?] > at java.lang.Thread.run(Thread.java:1583) [?:?] > Caused by: java.lang.IllegalArgumentException: Invalid Java version 65 > at > org.apache.aries.proxy.impl.ProxyUtils.getWeavingJavaVersion(ProxyUtils.java:104) > ~[?:?] > at > org.apache.aries.proxy.impl.interfaces.InterfaceCombiningClassAdapter.<init>(InterfaceCombiningClassAdapter.java:79) > ~[?:?] > at > org.apache.aries.proxy.impl.interfaces.ProxyClassLoader.createProxyClass(ProxyClassLoader.java:155) > ~[?:?] > at > org.apache.aries.proxy.impl.interfaces.InterfaceProxyGenerator.getProxyInstance(InterfaceProxyGenerator.java:97) > ~[?:?] > at > org.apache.aries.proxy.impl.AsmProxyManager.createNewProxy(AsmProxyManager.java:80) > ~[?:?] > at > org.apache.aries.proxy.impl.AbstractProxyManager.createDelegatingInterceptingProxy(AbstractProxyManager.java:77) > ~[?:?] > at > org.apache.aries.proxy.impl.AbstractProxyManager.createDelegatingProxy(AbstractProxyManager.java:42) > ~[?:?] > at > org.apache.aries.blueprint.container.AbstractServiceReferenceRecipe.createProxy(AbstractServiceReferenceRecipe.java:332) > ~[?:?] > at > org.apache.aries.blueprint.container.ReferenceRecipe.internalCreate(ReferenceRecipe.java:125) > ~[?:?] > ... 27 more > > But when I run on OpenJDK 17 it works fine. Is this due to the problem you > mentioned regarding Aries Blueprint/Proxy? It looks like ASM is being used. > However Karaf 4.4.4 uses ASM 9.5 which should support OpenJDK 21. > > I thought that generally a new Java version is backwards compatible. > Meaning that a specific java runtime would handle classes compiled for an > older java version. In this case, if I compile for java 17 I should be able > to run in on a java runtime >= 17. But this does not seem to be the case... > > /Bengt > > Den mån 27 nov. 2023 kl 17:31 skrev Bengt Rodehav <be...@rodehav.com>: > > > Thanks for the quick reply, > > > > /Bengt > > > > Den mån 27 nov. 2023 kl 15:16 skrev Jean-Baptiste Onofré <j...@nanthrax.net > > >: > > > >> Hi > >> > >> Karaf almost but not third parties (Aries Blueprint/Proxy, etc). > >> > >> I'm starting Karaf 4.5.x with full JDK21 support. > >> > >> Thanks ! > >> Regards > >> JB > >> > >> On Mon, Nov 27, 2023 at 1:50 PM Bengt Rodehav <be...@rodehav.com> wrote: > >> > > >> > Does Karaf 4.4.4 work with OpenJdk 21? > >> > > >> > /Bengt > >> > >