vaadin/base-starter-flow-osgi

Fails to run with Java 17

tarekoraby opened this issue · 2 comments

The starter fails to run with Java 17 (Eclipse Temuri jdk-17.0.0.35-hotspot).

To reproduce

Run command mvn install and then run java -jar app/target/app.jar

The app fails to start and the following error is generated:

"C:\Program Files\Eclipse Foundation\jdk-17.0.0.35-hotspot\bin\java.exe" -Dfile.encoding=windows-1252 -jar C:\dev\vaadin\base-starter-flow-osgi\app\target\app.jar
java.lang.NoSuchMethodException: sun.misc.Unsafe.defineAnonymousClass(java.lang.Class,[B,[Ljava.lang.Object;)
	at java.base/java.lang.Class.getMethod(Class.java:2227)
	at org.apache.felix.framework.util.SecureAction.getAccessor(SecureAction.java:1134)
	at org.apache.felix.framework.util.SecureAction.<clinit>(SecureAction.java:86)
	at org.apache.felix.framework.Felix.<clinit>(Felix.java:114)
	at org.apache.felix.framework.FrameworkFactory.newFramework(FrameworkFactory.java:30)
	at aQute.launcher.Launcher.createClassic(Launcher.java:1224)
	at aQute.launcher.Launcher.createFramework(Launcher.java:1202)
	at aQute.launcher.Launcher.activate(Launcher.java:484)
	at aQute.launcher.Launcher.launch(Launcher.java:400)
	at aQute.launcher.Launcher.run(Launcher.java:181)
	at aQute.launcher.Launcher.main(Launcher.java:157)
	at aQute.launcher.pre.EmbeddedLauncher.executeWithRunPath(EmbeddedLauncher.java:170)
	at aQute.launcher.pre.EmbeddedLauncher.findAndExecute(EmbeddedLauncher.java:119)
	at aQute.launcher.pre.EmbeddedLauncher.main(EmbeddedLauncher.java:52)
java.lang.NoSuchMethodException: sun.misc.Unsafe.defineAnonymousClass(java.lang.Class,[B,[Ljava.lang.Object;)
	at java.base/java.lang.Class.getMethod(Class.java:2227)
	at org.apache.felix.framework.util.SecureAction.getAccessor(SecureAction.java:1134)
	at org.apache.felix.framework.util.SecureAction.setAccesssible(SecureAction.java:998)
	at org.apache.felix.framework.ext.ClassPathExtenderFactory$DefaultClassLoaderExtender.<clinit>(ClassPathExtenderFactory.java:55)
	at org.apache.felix.framework.ExtensionManager.<clinit>(ExtensionManager.java:152)
	at org.apache.felix.framework.Felix.initializeFrameworkProperties(Felix.java:4881)
	at org.apache.felix.framework.Felix.<init>(Felix.java:405)
	at org.apache.felix.framework.Felix.<init>(Felix.java:355)
	at org.apache.felix.framework.FrameworkFactory.newFramework(FrameworkFactory.java:30)
	at aQute.launcher.Launcher.createClassic(Launcher.java:1224)
	at aQute.launcher.Launcher.createFramework(Launcher.java:1202)
	at aQute.launcher.Launcher.activate(Launcher.java:484)
	at aQute.launcher.Launcher.launch(Launcher.java:400)
	at aQute.launcher.Launcher.run(Launcher.java:181)
	at aQute.launcher.Launcher.main(Launcher.java:157)
	at aQute.launcher.pre.EmbeddedLauncher.executeWithRunPath(EmbeddedLauncher.java:170)
	at aQute.launcher.pre.EmbeddedLauncher.findAndExecute(EmbeddedLauncher.java:119)
	at aQute.launcher.pre.EmbeddedLauncher.main(EmbeddedLauncher.java:52)
java.lang.ExceptionInInitializerError
	at org.apache.felix.framework.URLHandlers.<clinit>(URLHandlers.java:119)
	at org.apache.felix.framework.URLHandlersActivator.start(URLHandlersActivator.java:69)
	at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:825)
	at org.apache.felix.framework.Felix$SystemBundleActivator.start(Felix.java:5173)
	at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:825)
	at org.apache.felix.framework.Felix.init(Felix.java:899)
	at org.apache.felix.framework.Felix.init(Felix.java:648)
	at aQute.launcher.Launcher.createFramework(Launcher.java:1215)
	at aQute.launcher.Launcher.activate(Launcher.java:484)
	at aQute.launcher.Launcher.launch(Launcher.java:400)
	at aQute.launcher.Launcher.run(Launcher.java:181)
	at aQute.launcher.Launcher.main(Launcher.java:157)
	at aQute.launcher.pre.EmbeddedLauncher.executeWithRunPath(EmbeddedLauncher.java:170)
	at aQute.launcher.pre.EmbeddedLauncher.findAndExecute(EmbeddedLauncher.java:119)
	at aQute.launcher.pre.EmbeddedLauncher.main(EmbeddedLauncher.java:52)
Caused by: java.lang.RuntimeException: Unable to make protected boolean java.net.URLStreamHandler.equals(java.net.URL,java.net.URL) accessible: module java.base does not "opens java.net" to unnamed module @17d99928
	at org.apache.felix.framework.URLHandlersStreamHandlerProxy.<clinit>(URLHandlersStreamHandlerProxy.java:103)
	... 15 more
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected boolean java.net.URLStreamHandler.equals(java.net.URL,java.net.URL) accessible: module java.base does not "opens java.net" to unnamed module @17d99928
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
	at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)
	at java.base/java.lang.reflect.AccessibleObject.setAccessible(AccessibleObject.java:130)
	at org.apache.felix.framework.util.SecureAction.lambda$getAccessor$0(SecureAction.java:1145)
	at org.apache.felix.framework.util.SecureAction.setAccesssible(SecureAction.java:998)
	at org.apache.felix.framework.URLHandlersStreamHandlerProxy.<clinit>(URLHandlersStreamHandlerProxy.java:78)
	... 15 more
Nov 02, 2021 10:01:22 AM org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.helger.commons.equals.DefaultEqualsImplementationRegistrarSPI of service com.helger.commons.equals.IEqualsImplementationRegistrarSPI in bundle com.helger.ph-commons
Nov 02, 2021 10:01:22 AM org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.helger.commons.hashcode.DefaultHashCodeImplementationRegistrarSPI of service com.helger.commons.hashcode.IHashCodeImplementationRegistrarSPI in bundle com.helger.ph-commons
Nov 02, 2021 10:01:22 AM org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.helger.commons.serialize.convert.BasicSerializationConverterRegistrar of service com.helger.commons.serialize.convert.ISerializationConverterRegistrarSPI in bundle com.helger.ph-commons
Nov 02, 2021 10:01:22 AM org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.helger.commons.thirdparty.ThirdPartyModuleProvider_ph_commons of service com.helger.commons.thirdparty.IThirdPartyModuleProviderSPI in bundle com.helger.ph-commons
Nov 02, 2021 10:01:22 AM org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.helger.commons.typeconvert.BaseTypeConverterRegistrar of service com.helger.commons.typeconvert.ITypeConverterRegistrarSPI in bundle com.helger.ph-commons
Nov 02, 2021 10:01:22 AM org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.helger.commons.typeconvert.CharsetTypeConverterRegistrar of service com.helger.commons.typeconvert.ITypeConverterRegistrarSPI in bundle com.helger.ph-commons
Nov 02, 2021 10:01:22 AM org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.helger.commons.typeconvert.CollectionTypeConverterRegistrar of service com.helger.commons.typeconvert.ITypeConverterRegistrarSPI in bundle com.helger.ph-commons
Nov 02, 2021 10:01:22 AM org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.helger.commons.typeconvert.DateTimeTypeConverterRegistrar of service com.helger.commons.typeconvert.ITypeConverterRegistrarSPI in bundle com.helger.ph-commons
Nov 02, 2021 10:01:22 AM org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.helger.commons.typeconvert.IOTypeConverterRegistrar of service com.helger.commons.typeconvert.ITypeConverterRegistrarSPI in bundle com.helger.ph-commons
Nov 02, 2021 10:01:22 AM org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.helger.commons.typeconvert.LocaleTypeConverterRegistrar of service com.helger.commons.typeconvert.ITypeConverterRegistrarSPI in bundle com.helger.ph-commons
Nov 02, 2021 10:01:22 AM org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.helger.commons.typeconvert.MutableTypeConverterRegistrar of service com.helger.commons.typeconvert.ITypeConverterRegistrarSPI in bundle com.helger.ph-commons
Nov 02, 2021 10:01:22 AM org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.helger.commons.equals.DefaultEqualsImplementationRegistrarSPI of service com.helger.commons.equals.IEqualsImplementationRegistrarSPI in bundle com.helger.ph-commons
Nov 02, 2021 10:01:22 AM org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.helger.commons.hashcode.DefaultHashCodeImplementationRegistrarSPI of service com.helger.commons.hashcode.IHashCodeImplementationRegistrarSPI in bundle com.helger.ph-commons
Nov 02, 2021 10:01:22 AM org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.helger.commons.serialize.convert.BasicSerializationConverterRegistrar of service com.helger.commons.serialize.convert.ISerializationConverterRegistrarSPI in bundle com.helger.ph-commons
Nov 02, 2021 10:01:22 AM org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.helger.commons.thirdparty.ThirdPartyModuleProvider_ph_commons of service com.helger.commons.thirdparty.IThirdPartyModuleProviderSPI in bundle com.helger.ph-commons
Nov 02, 2021 10:01:22 AM org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.helger.commons.typeconvert.BaseTypeConverterRegistrar of service com.helger.commons.typeconvert.ITypeConverterRegistrarSPI in bundle com.helger.ph-commons
Nov 02, 2021 10:01:22 AM org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.helger.commons.typeconvert.CharsetTypeConverterRegistrar of service com.helger.commons.typeconvert.ITypeConverterRegistrarSPI in bundle com.helger.ph-commons
Nov 02, 2021 10:01:22 AM org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.helger.commons.typeconvert.CollectionTypeConverterRegistrar of service com.helger.commons.typeconvert.ITypeConverterRegistrarSPI in bundle com.helger.ph-commons
Nov 02, 2021 10:01:22 AM org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.helger.commons.typeconvert.DateTimeTypeConverterRegistrar of service com.helger.commons.typeconvert.ITypeConverterRegistrarSPI in bundle com.helger.ph-commons
Nov 02, 2021 10:01:22 AM org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.helger.commons.typeconvert.IOTypeConverterRegistrar of service com.helger.commons.typeconvert.ITypeConverterRegistrarSPI in bundle com.helger.ph-commons
Nov 02, 2021 10:01:22 AM org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.helger.commons.typeconvert.LocaleTypeConverterRegistrar of service com.helger.commons.typeconvert.ITypeConverterRegistrarSPI in bundle com.helger.ph-commons
Nov 02, 2021 10:01:22 AM org.apache.aries.spifly.BaseActivator log
INFO: Registered provider com.helger.commons.typeconvert.MutableTypeConverterRegistrar of service com.helger.commons.typeconvert.ITypeConverterRegistrarSPI in bundle com.helger.ph-commons
Nov 02, 2021 10:01:22 AM org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.http.Http1FieldPreEncoder of service org.eclipse.jetty.http.HttpFieldPreEncoder in bundle org.apache.felix.http.jetty
Nov 02, 2021 10:01:22 AM org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.http2.hpack.HpackFieldPreEncoder of service org.eclipse.jetty.http.HttpFieldPreEncoder in bundle org.apache.felix.http.jetty
Nov 02, 2021 10:01:22 AM org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.http.Http1FieldPreEncoder of service org.eclipse.jetty.http.HttpFieldPreEncoder in bundle org.apache.felix.http.jetty
Nov 02, 2021 10:01:22 AM org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.eclipse.jetty.http2.hpack.HpackFieldPreEncoder of service org.eclipse.jetty.http.HttpFieldPreEncoder in bundle org.apache.felix.http.jetty
! Failed to start bundle org.apache.felix.http.jetty-4.1.4, exception activator error Weaving hook failed. from: org.apache.felix.framework.BundleWiringImpl$BundleClassLoader:transformClass#2391
org.osgi.framework.BundleException: Activator start error in bundle org.apache.felix.http.jetty [29].
	at org.apache.felix.framework.Felix.activateBundle(Felix.java:2479)
	at org.apache.felix.framework.Felix.startBundle(Felix.java:2335)
	at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:1007)
	at aQute.launcher.Launcher.start(Launcher.java:674)
	at aQute.launcher.Launcher.startBundles(Launcher.java:654)
	at aQute.launcher.Launcher.activate(Launcher.java:560)
	at aQute.launcher.Launcher.launch(Launcher.java:400)
	at aQute.launcher.Launcher.run(Launcher.java:181)
	at aQute.launcher.Launcher.main(Launcher.java:157)
	at aQute.launcher.pre.EmbeddedLauncher.executeWithRunPath(EmbeddedLauncher.java:170)
	at aQute.launcher.pre.EmbeddedLauncher.findAndExecute(EmbeddedLauncher.java:119)
	at aQute.launcher.pre.EmbeddedLauncher.main(EmbeddedLauncher.java:52)
Caused by: java.lang.ClassFormatError: Weaving hook failed.
	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.transformClass(BundleWiringImpl.java:2391)
	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.findClass(BundleWiringImpl.java:2069)
	at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1550)
	at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79)
	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1970)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
	at org.apache.felix.http.base.internal.HttpServiceController.<init>(HttpServiceController.java:56)
	at org.apache.felix.http.base.internal.AbstractHttpActivator.doStart(AbstractHttpActivator.java:33)
	at org.apache.felix.http.jetty.internal.JettyActivator.doStart(JettyActivator.java:43)
	at org.apache.felix.http.base.internal.AbstractActivator.start(AbstractActivator.java:39)
	at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:825)
	at org.apache.felix.framework.Felix.activateBundle(Felix.java:2429)
	... 11 more
Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 61
	at org.objectweb.asm.ClassReader.<init>(ClassReader.java:189)
	at org.objectweb.asm.ClassReader.<init>(ClassReader.java:170)
	at org.objectweb.asm.ClassReader.<init>(ClassReader.java:156)
	at org.objectweb.asm.ClassReader.<init>(ClassReader.java:277)
	at org.apache.aries.spifly.dynamic.OSGiFriendlyClassWriter.getCommonSuperClass(OSGiFriendlyClassWriter.java:84)
	at org.objectweb.asm.SymbolTable.addMergedType(SymbolTable.java:1202)
	at org.objectweb.asm.Frame.merge(Frame.java:1299)
	at org.objectweb.asm.Frame.merge(Frame.java:1197)
	at org.objectweb.asm.MethodWriter.computeAllFrames(MethodWriter.java:1610)
	at org.objectweb.asm.MethodWriter.visitMaxs(MethodWriter.java:1546)
	at org.objectweb.asm.MethodVisitor.visitMaxs(MethodVisitor.java:773)
	at org.objectweb.asm.commons.LocalVariablesSorter.visitMaxs(LocalVariablesSorter.java:148)
	at org.objectweb.asm.ClassReader.readCode(ClassReader.java:2629)
	at org.objectweb.asm.ClassReader.readMethod(ClassReader.java:1481)
	at org.objectweb.asm.ClassReader.accept(ClassReader.java:711)
	at org.objectweb.asm.ClassReader.accept(ClassReader.java:394)
	at org.apache.aries.spifly.dynamic.ClientWeavingHook.weave(ClientWeavingHook.java:60)
	at org.apache.felix.framework.util.SecureAction.invokeWeavingHook(SecureAction.java:1372)
	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.transformClass(BundleWiringImpl.java:2377)
	... 22 more
[main] INFO com.vaadin.flow.osgi.support.ServletContainerInitializerClasses - Unable to detect used OSGi framework version due to Cannot invoke "org.osgi.framework.Bundle.getVersion()" because "osgiBundle" is null

What I see from the exception this would seem to be a Felix issue that it doesn't work with JDK17.
I couldn't find any info on Felix and JDK17 support.
For Karaf I found the info Karaf 4.3.3 now fully supports JDK17 both at build time and runtime from September 13, 2021 which uses Felix, but nothing on actual Felix support

Apache Felix fixed a JDK 17 related bug on version 7.0.1 (https://issues.apache.org/jira/browse/FELIX-6430)
A fast check with Apache Felix 7.0.3 and also upgrading Apache Aries SPI Fly dependencies to 1.3.4 seems to work fine.