This is an automated email from the ASF dual-hosted git repository.
gnodet pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new 555c74b8787d CAMEL-23213: Handle Spring Boot catalog provider
requiring JDK 21+ (#22087)
555c74b8787d is described below
commit 555c74b8787d29c6d73dbe6804b75bc79967c79b
Author: Guillaume Nodet <[email protected]>
AuthorDate: Thu Mar 19 06:24:48 2026 +0100
CAMEL-23213: Handle Spring Boot catalog provider requiring JDK 21+ (#22087)
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