I am using CXF SOAP to invoke a SOAP webservice. Here I am attaching the sample code from GitHub. and the command i use to run is as below.
Git Repository https://github.com/gtata007/camel-k-soap/tree/develop
JBang run command below : camel run TestWeb.java --deps=camel-cxf:3.14.0
While I am trying to build/run the application with the camel Jbang command to test this webservice locally, it started throwing an error. Because it is unable to reference the java package/classes from in my route builder java code. What are the possible ways to build this application by referring to the class files?
Below is the error stack trace for reference.
org.joor.ReflectException: Compilation error: /TestWeb.java:5: error: package org.oorsprong.websamples_countryinfo does not exist import org.oorsprong.websamples_countryinfo.CountryInfoService; ^
at org.apache.camel.dsl.java.joor.MultiCompile.compileUnit(MultiCompile.java:144)
at org.apache.camel.dsl.java.joor.JavaRoutesBuilderLoader.doLoadRoutesBuilders(JavaRoutesBuilderLoader.java:122)
at org.apache.camel.dsl.support.ExtendedRouteBuilderLoaderSupport.loadRoutesBuilders(ExtendedRouteBuilderLoaderSupport.java:48)
at org.apache.camel.impl.engine.DefaultRoutesLoader.findRoutesBuilders(DefaultRoutesLoader.java:119)
at org.apache.camel.main.DefaultRoutesCollector.collectRoutesFromDirectory(DefaultRoutesCollector.java:148)
at org.apache.camel.main.RoutesConfigurer.configureRoutes(RoutesConfigurer.java:187)
at org.apache.camel.main.BaseMainSupport.configureRoutes(BaseMainSupport.java:652)
at org.apache.camel.main.MainSupport.initCamelContext(MainSupport.java:404)
at org.apache.camel.main.KameletMain.doInit(KameletMain.java:265)
at org.apache.camel.support.service.BaseService.init(BaseService.java:83)
at org.apache.camel.support.service.BaseService.start(BaseService.java:111)
at org.apache.camel.dsl.jbang.core.commands.Run.run(Run.java:560)
at org.apache.camel.dsl.jbang.core.commands.Run.call(Run.java:208)
at org.apache.camel.dsl.jbang.core.commands.Run.call(Run.java:75)
at picocli.CommandLine.executeUserObject(CommandLine.java:2041)
at picocli.CommandLine.access$1500(CommandLine.java:148)
at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2461)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2453)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2415)
at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2273)
at picocli.CommandLine$RunLast.execute(CommandLine.java:2417)
at picocli.CommandLine.execute(CommandLine.java:2170)
at org.apache.camel.dsl.jbang.core.commands.CamelJBangMain.run(CamelJBangMain.java:129)
at main.CamelJBang.main(CamelJBang.java:36)
For your information, I have completed the setup of Camel Jbang in my system to test my Camel routes locally before it is deployed to the container. I am using CamelK version 1.10.2.
Support for packages requires a newer Camel and Camel JBang version and also works best on Java 17. However could be working on Java 11 on Camel 3.20.2 as well. So I suggest to update to latest Camel and if possible upgrade to Java 17 also.