From c87e127cb48456d336dfa24be5eb2edb092d4180 Mon Sep 17 00:00:00 2001 From: Arne Juul Date: Sun, 18 Jan 2026 11:30:02 +0000 Subject: [PATCH 1/3] Add Maven profiles to support building with JDK 8-16 - Add 'ancient-jdk' profile (JDK 8-10) that skips test compilation and execution - Add 'old-jdk' profile (JDK 11-16) with appropriate JVM args for module system - Update default surefire configuration for JDK 17+ with --add-opens flags and security manager settings - Upgrade ASM library from 5.2 to 9.9 and split into asm + asm-tree dependencies - Update test code to use ASM 9.x API (remove Opcodes.ASM4 flag) This allows the project to be built with older JDK versions while maintaining compatibility with modern JDK releases (17+). --- framework/pom.xml | 90 ++++++++++++++++++- .../felix/framework/BundleWiringImplTest.java | 4 +- 2 files changed, 89 insertions(+), 5 deletions(-) diff --git a/framework/pom.xml b/framework/pom.xml index 4f214cc6e1..5d59d8f37f 100644 --- a/framework/pom.xml +++ b/framework/pom.xml @@ -45,8 +45,13 @@ org.apache.maven.plugins maven-surefire-plugin + -Djava.security.manager=allow + -XX:+EnableDynamicAgentLoading + --add-opens java.base/java.net=ALL-UNNAMED + --add-opens java.base/jdk.internal.loader=ALL-UNNAMED + --add-opens java.base/java.security=ALL-UNNAMED @@ -119,7 +124,7 @@ org.osgi.framework.*;-split-package:=first, org.osgi.resource;-split-package:=first, - org.osgi.resource.dto;-split-package:=first, + org.osgi.resource.dto;-split-package:=first, org.osgi.service.packageadmin;-split-package:=first, org.osgi.service.startlevel;-split-package:=first, org.osgi.service.url;-split-package:=first, @@ -221,8 +226,14 @@ org.ow2.asm - asm-all - 5.2 + asm + 9.9 + test + + + org.ow2.asm + asm-tree + 9.9 test @@ -249,4 +260,77 @@ 1.9 + + + + + ancient-jdk + + [8,11) + + + + + org.apache.maven.plugins + maven-surefire-plugin + + true + + + + org.apache.maven.plugins + maven-compiler-plugin + + + default-testCompile + test-compile + + testCompile + + + true + + + + + ${felix.java.version} + ${felix.java.version} + + + + + + + + + + old-jdk + + [11,17) + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + -XX:+EnableDynamicAgentLoading + --add-opens java.base/java.net=ALL-UNNAMED + --add-opens java.base/jdk.internal.loader=ALL-UNNAMED + --add-opens java.base/java.security=ALL-UNNAMED + + + + + + + + diff --git a/framework/src/test/java/org/apache/felix/framework/BundleWiringImplTest.java b/framework/src/test/java/org/apache/felix/framework/BundleWiringImplTest.java index 6d009036aa..c362243713 100644 --- a/framework/src/test/java/org/apache/felix/framework/BundleWiringImplTest.java +++ b/framework/src/test/java/org/apache/felix/framework/BundleWiringImplTest.java @@ -1137,7 +1137,7 @@ public void weave(WovenClass wovenClass) reader.accept(classNode, 0); classNode.fields.add(new FieldNode(Opcodes.ACC_PUBLIC, "awesomePublicField", "Ljava/lang/String;", null, null)); - ClassWriter writer = new ClassWriter(reader, Opcodes.ASM4); + ClassWriter writer = new ClassWriter(reader, 0); classNode.accept(writer); wovenClass.setBytes(writer.toByteArray()); } @@ -1158,7 +1158,7 @@ public void weave(WovenClass wovenClass) "awesomePublicField", "Ljava/lang/String;", null, null)); classNode.fields.add(new FieldNode(Opcodes.ACC_PUBLIC, "awesomePublicField", "Ljava/lang/String;", null, null)); - ClassWriter writer = new ClassWriter(reader, Opcodes.ASM4); + ClassWriter writer = new ClassWriter(reader, 0); classNode.accept(writer); wovenClass.setBytes(writer.toByteArray()); } From 2a7e0b85456ca946984f769cfc3dbc0c5b80b45a Mon Sep 17 00:00:00 2001 From: Arne Juul Date: Sun, 18 Jan 2026 17:46:19 +0000 Subject: [PATCH 2/3] add profile for JDK 25+ as well Note: tested on the branch "feature/FELIX-6759-Java-25-LTS" with openjdk version "25.0.1" --- framework/pom.xml | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/framework/pom.xml b/framework/pom.xml index 5d59d8f37f..5282ee29e3 100644 --- a/framework/pom.xml +++ b/framework/pom.xml @@ -331,6 +331,34 @@ + + + + newer-jdk + + [25,) + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + -XX:+EnableDynamicAgentLoading + --add-opens java.base/java.net=ALL-UNNAMED + --add-opens java.base/jdk.internal.loader=ALL-UNNAMED + --add-opens java.base/java.security=ALL-UNNAMED + + + + + + + From 6bcf511f960807f6dc0334f6a5468cf27ca24cac Mon Sep 17 00:00:00 2001 From: Arne Juul Date: Mon, 19 Jan 2026 11:28:18 +0000 Subject: [PATCH 3/3] Handle JDK identifying as version 1.8 as well --- framework/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/pom.xml b/framework/pom.xml index 5282ee29e3..e26a325c75 100644 --- a/framework/pom.xml +++ b/framework/pom.xml @@ -269,7 +269,7 @@ ancient-jdk - [8,11) + [1,11)