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

Reply via email to