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