Camel Karavan VS Code java.lang.ClassNotFoundException from Bean

98 Views Asked by At

I want to use integration using Camel Karavan. The essence of integration is to receive messages from REST service and transfer them to RabbitMq. To create a connection to RabbitMq I made Bean.

Here is my yaml file:

- rest:
    id: rest-6f81
    post:
      - id: post-78d2
        path: /order-status-update
        to: direct:internal
        consumes: application/json
- beans:
    - constructors: {}
      name: RabbitMQConnectionFactory
      properties:
        host: localhost
        port: '5772'
        username: Test
        password: Test
      type: org.springframework.amqp.rabbit.connection.CachingConnectionFactory
- route:
    id: route-d7a0
    nodePrefixId: route-425
    from:
      id: from-b82a
      uri: direct
      parameters:
        name: internal
      steps:
        - log:
            id: log-90a7
            message: ${body}
        - to:
            id: to-bcd8
            uri: spring-rabbitmq
            parameters:
              exchangeName: test
              testConnectionOnStartup: true
              connectionFactory: '#bean:RabbitMQConnectionFactory'

At startup.

jbang "-Dcamel.jbang.version=4.3.0" camel@apache/camel run *

I get the following error logs:

2024-01-10 22:44:26.558  INFO 29564 --- [           main] org.apache.camel.main.MainSupport   : Apache Camel (JBang) 4.3.0 is starting
2024-01-10 22:44:26.590  INFO 29564 --- [           main] org.apache.camel.main.MainSupport   : Additional files added to classpath: event-gateway.json                                                                                                                                         в общем 
2024-01-10 22:44:26.695  INFO 29564 --- [           main] org.apache.camel.main.MainSupport   : Using Java 17.0.9 with PID 29564. Started by User in C:\Users\user\Desktop\Karavan1
org.apache.camel.RuntimeCamelException: Error pre-parsing resource: file:testts.camel.yaml
        at org.apache.camel.dsl.yaml.YamlRoutesBuilderLoader.preParseRoute(YamlRoutesBuilderLoader.java:913)
        at org.apache.camel.main.RoutesConfigurer.doConfigureModeline(RoutesConfigurer.java:374)
        at org.apache.camel.main.RoutesConfigurer.configureModeline(RoutesConfigurer.java:300)
        at org.apache.camel.main.BaseMainSupport.modelineRoutes(BaseMainSupport.java:594)
        at org.apache.camel.main.BaseMainSupport.autoconfigure(BaseMainSupport.java:447)
        at org.apache.camel.main.MainSupport.autoconfigure(MainSupport.java:73)
        at org.apache.camel.main.KameletMain.autoconfigure(KameletMain.java:626)
        at org.apache.camel.main.BaseMainSupport.postProcessCamelContext(BaseMainSupport.java:672)
        at org.apache.camel.main.MainSupport.initCamelContext(MainSupport.java:339)
        at org.apache.camel.main.KameletMain.doInit(KameletMain.java:314)
        at org.apache.camel.support.service.BaseService.init(BaseService.java:78)
        at org.apache.camel.support.service.BaseService.start(BaseService.java:105)
        at org.apache.camel.dsl.jbang.core.commands.Run.runKameletMain(Run.java:1059)
        at org.apache.camel.dsl.jbang.core.commands.Run.run(Run.java:781)
        at org.apache.camel.dsl.jbang.core.commands.Run.doCall(Run.java:290)
        at org.apache.camel.dsl.jbang.core.commands.CamelCommand.call(CamelCommand.java:71)
        at org.apache.camel.dsl.jbang.core.commands.CamelCommand.call(CamelCommand.java:36)
        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:172)
        at main.CamelJBang.main(CamelJBang.java:36)
Caused by: java.lang.RuntimeException: Error creating bean: RabbitMQConnectionFactory of type: #class:org.springframework.amqp.rabbit.connection.CachingConnectionFactory
        at org.apache.camel.dsl.yaml.deserializers.BeansDeserializer.registerBean(BeansDeserializer.java:212)
        at org.apache.camel.dsl.yaml.deserializers.BeansDeserializer$BeansCustomizer.configure(BeansDeserializer.java:235)
        at org.apache.camel.dsl.yaml.YamlRoutesBuilderLoader.preParseNode(YamlRoutesBuilderLoader.java:933)
        at org.apache.camel.dsl.yaml.YamlRoutesBuilderLoader.lambda$preParseRoute$5(YamlRoutesBuilderLoader.java:911)
        at java.base/java.util.Optional.map(Optional.java:260)
        at org.apache.camel.dsl.yaml.YamlRoutesBuilderLoader.preParseRoute(YamlRoutesBuilderLoader.java:911)
        ... 26 more
Caused by: java.lang.ClassNotFoundException: org.springframework.amqp.rabbit.connection.CachingConnectionFactory
        at org.apache.camel.impl.engine.DefaultClassResolver.resolveMandatoryClass(DefaultClassResolver.java:113)
        at org.apache.camel.support.PropertyBindingSupport.resolveBean(PropertyBindingSupport.java:1566)
        at org.apache.camel.dsl.yaml.deserializers.BeansDeserializer.newInstance(BeansDeserializer.java:185)
        at org.apache.camel.dsl.yaml.deserializers.BeansDeserializer.registerBean(BeansDeserializer.java:204)
        ... 31 more

I think the key problem is this: java.lang.ClassNotFoundException: org.springframework.amqp.rabbit.connection.CachingConnectionFactory

Can anyone tell me how to fix this?

I use camel-karavan as VS Code extension.

1

There are 1 best solutions below

0
Claus Ibsen On

This is also reported at Karavan https://github.com/apache/camel-karavan/discussions/1060

And there you can see the solution.