This is an automated email from the ASF dual-hosted git repository. gnodet pushed a commit to branch CAMEL-23213 in repository https://gitbox.apache.org/repos/asf/camel.git
commit 70f9eeb0893c78d20fc51408d615917cd588dd85 Author: Guillaume Nodet <[email protected]> AuthorDate: Wed Mar 18 22:59:41 2026 +0100 CAMEL-23213: Handle Spring Boot catalog provider requiring JDK 21+ CatalogLoader now catches UnsupportedClassVersionError when loading SpringBootRuntimeProvider and provides a clear error message suggesting to use --camel-spring-boot-version=4.18.x for JDK 17 compatibility. Tests skip Spring Boot runtime type on JDK < 21 since camel-spring-boot 4.19+ requires Spring Boot 4 (JDK 21). Co-Authored-By: Claude Opus 4.6 <[email protected]> --- .../apache/camel/dsl/jbang/core/common/CatalogLoader.java | 13 ++++++++++++- .../camel/dsl/jbang/core/commands/DependencyListTest.java | 12 ++++++++---- .../camel/dsl/jbang/core/commands/DependencyUpdateTest.java | 12 ++++++++---- .../core/commands/ExportMainApplicationProperties.java | 12 ++++++++---- .../apache/camel/dsl/jbang/core/commands/ExportTest.java | 12 ++++++++---- 5 files changed, 44 insertions(+), 17 deletions(-) diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/CatalogLoader.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/CatalogLoader.java index 9c1606de885c..f1c24f3c2d87 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/CatalogLoader.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/CatalogLoader.java @@ -150,7 +150,18 @@ public final class CatalogLoader { "Cannot download " + springBootGroupId + ":camel-catalog-provider-springboot:" + version); } - Class<RuntimeProvider> clazz = (Class<RuntimeProvider>) cl.loadClass(SPRING_BOOT_CATALOG_PROVIDER); + Class<RuntimeProvider> clazz; + try { + clazz = (Class<RuntimeProvider>) cl.loadClass(SPRING_BOOT_CATALOG_PROVIDER); + } catch (UnsupportedClassVersionError e) { + String sbVersion = PropertyResolver.fromSystemProperty( + CamelJBangConstants.CAMEL_SPRING_BOOT_VERSION, () -> camelVersion); + throw new IOException( + "Cannot load camel-catalog-provider-springboot:" + sbVersion + + " on Java " + Runtime.version() + + ". Spring Boot runtime requires JDK 21+ starting from camel-spring-boot 4.19.0." + + " Use --camel-spring-boot-version=4.18.x for JDK 17 compatibility, or run on JDK 21+."); + } if (clazz != null) { Class<CamelCatalog> clazz2 = (Class<CamelCatalog>) cl.loadClass(DEFAULT_CAMEL_CATALOG); if (clazz2 != null) { diff --git a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/DependencyListTest.java b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/DependencyListTest.java index 80d3c53098a4..cea01631c330 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/DependencyListTest.java +++ b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/DependencyListTest.java @@ -83,10 +83,14 @@ class DependencyListTest extends CamelCommandBaseTestSupport { } private static Stream<Arguments> runtimeProvider() { - return Stream.of( - Arguments.of(RuntimeType.quarkus), - Arguments.of(RuntimeType.springBoot), - Arguments.of(RuntimeType.main)); + Stream.Builder<Arguments> builder = Stream.builder(); + builder.add(Arguments.of(RuntimeType.quarkus)); + // camel-spring-boot 4.19+ requires JDK 21 (Spring Boot 4) + if (Runtime.version().feature() >= 21) { + builder.add(Arguments.of(RuntimeType.springBoot)); + } + builder.add(Arguments.of(RuntimeType.main)); + return builder.build(); } } diff --git a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/DependencyUpdateTest.java b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/DependencyUpdateTest.java index 24e89747fcd8..4475d190267b 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/DependencyUpdateTest.java +++ b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/DependencyUpdateTest.java @@ -138,10 +138,14 @@ class DependencyUpdateTest extends CamelCommandBaseTestSupport { } private static Stream<Arguments> runtimeProvider() { - return Stream.of( - Arguments.of(RuntimeType.quarkus), - Arguments.of(RuntimeType.springBoot), - Arguments.of(RuntimeType.main)); + Stream.Builder<Arguments> builder = Stream.builder(); + builder.add(Arguments.of(RuntimeType.quarkus)); + // camel-spring-boot 4.19+ requires JDK 21 (Spring Boot 4) + if (Runtime.version().feature() >= 21) { + builder.add(Arguments.of(RuntimeType.springBoot)); + } + builder.add(Arguments.of(RuntimeType.main)); + return builder.build(); } } diff --git a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ExportMainApplicationProperties.java b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ExportMainApplicationProperties.java index 829e7980778d..f479f77dd9aa 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ExportMainApplicationProperties.java +++ b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ExportMainApplicationProperties.java @@ -55,10 +55,14 @@ class ExportMainApplicationProperties { } private static Stream<Arguments> runtimeProvider() { - return Stream.of( - Arguments.of(RuntimeType.quarkus), - Arguments.of(RuntimeType.springBoot), - Arguments.of(RuntimeType.main)); + Stream.Builder<Arguments> builder = Stream.builder(); + builder.add(Arguments.of(RuntimeType.quarkus)); + // camel-spring-boot 4.19+ requires JDK 21 (Spring Boot 4) + if (Runtime.version().feature() >= 21) { + builder.add(Arguments.of(RuntimeType.springBoot)); + } + builder.add(Arguments.of(RuntimeType.main)); + return builder.build(); } @ParameterizedTest diff --git a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ExportTest.java b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ExportTest.java index d3e1f13a7ec5..9689bbd50d5a 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ExportTest.java +++ b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ExportTest.java @@ -67,10 +67,14 @@ class ExportTest { } private static Stream<Arguments> runtimeProvider() { - return Stream.of( - Arguments.of(RuntimeType.quarkus), - Arguments.of(RuntimeType.springBoot), - Arguments.of(RuntimeType.main)); + Stream.Builder<Arguments> builder = Stream.builder(); + builder.add(Arguments.of(RuntimeType.quarkus)); + // camel-spring-boot 4.19+ requires JDK 21 (Spring Boot 4) + if (Runtime.version().feature() >= 21) { + builder.add(Arguments.of(RuntimeType.springBoot)); + } + builder.add(Arguments.of(RuntimeType.main)); + return builder.build(); } @ParameterizedTest
