This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch camel-4.14.x
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/camel-4.14.x by this push:
     new 9dd2b1631b16 CAMEL-22776 camel-jbang-kubernetes: Unable to export 
project on Windows (#20481) (#20512)
9dd2b1631b16 is described below

commit 9dd2b1631b16d766dbf45222665518b5a04bd6bb
Author: Claudio Miranda <[email protected]>
AuthorDate: Fri Dec 19 07:05:20 2025 +0000

    CAMEL-22776 camel-jbang-kubernetes: Unable to export project on Windows 
(#20481) (#20512)
    
    https://issues.apache.org/jira/browse/CAMEL-22776
---
 .../org/apache/camel/dsl/jbang/core/commands/ExportHelper.java     | 5 ++++-
 .../dsl/jbang/core/commands/kubernetes/KubernetesExportTest.java   | 7 ++++++-
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportHelper.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportHelper.java
index b1b9c4d4861c..0134df09ad0a 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportHelper.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportHelper.java
@@ -44,7 +44,10 @@ public final class ExportHelper {
             ClassLoader classLoader, String scheme, Path source, Path target, 
boolean override, boolean symbolicLink)
             throws Exception {
         if ("classpath".equals(scheme)) {
-            try (var ins = classLoader.getResourceAsStream(source.toString());
+            // in windows the source object contains the windows file separator
+            // the getResourceAsStream cannot find the resource file inside 
the jar in this case
+            // then we have to replace the windows file separator to unix style
+            try (var ins = 
classLoader.getResourceAsStream(source.toString().replace("\\", "/"));
                  var outs = Files.newOutputStream(target)) {
                 IOHelper.copy(ins, outs);
             }
diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExportTest.java
 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExportTest.java
index 8ce421591ae3..2b73682e3922 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExportTest.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExportTest.java
@@ -54,7 +54,9 @@ class KubernetesExportTest extends KubernetesExportBaseTest {
     @ParameterizedTest
     @MethodSource("runtimeProvider")
     public void shouldGenerateProject(RuntimeType rt) throws Exception {
-        KubernetesExport command = createCommand(new String[] { 
"classpath:route.yaml" },
+        // the backslash is to simulate the windows file separator, related to 
CAMEL-22776
+        // as the ExportBaseCommand uses Paths.get to read the file it also 
sets the backslash
+        KubernetesExport command = createCommand(new String[] { 
"classpath:myapp\\route.yaml" },
                 "--gav=examples:route:1.0.0", "--runtime=" + rt.runtime());
         int exit = command.doCall();
         Assertions.assertEquals(0, exit);
@@ -74,6 +76,9 @@ class KubernetesExportTest extends KubernetesExportBaseTest {
         Assertions.assertNull(props.get("jkube.container-image.platforms"));
 
         Properties applicationProperties = 
getApplicationProperties(workingDir);
+        String scriptContent = readResource(workingDir, 
"src/main/scripts/run-java.sh");
+        Assertions.assertNotNull(scriptContent);
+        Assertions.assertTrue(scriptContent.length() > 0);
 
         if (RuntimeType.quarkus == RuntimeType.fromValue(rt.runtime())) {
             Assertions.assertEquals("9876", 
props.get("quarkus.management.port"));

Reply via email to