apache / camel-kamelets

Apache Camel Kamelets Repository
https://camel.apache.org
Apache License 2.0
54 stars 73 forks source link

Bitcoin Source fails with #2112

Closed mwmahlberg closed 1 month ago

mwmahlberg commented 1 month ago

It seems like there is a dependency missing for the bitcoin-source.

Note: All the following resources were neated and stripped of namespace for ease of use during debugging.

When running:

apiVersion: camel.apache.org/v1
kind: Pipe
metadata:
  annotations:
    camel.apache.org/operator.id: camel-k
  name: bitcoin-rate
spec:
  sink:
    ref:
      apiVersion: camel.apache.org/v1
      kind: Kamelet
      name: log-sink
  source:
    ref:
      apiVersion: camel.apache.org/v1
      kind: Kamelet
      name: bitcoin-source

it is built correctly, but throws a NoClassDefFoundError during startup for javax/ws/rs/Path.

Operator and client version are both 2.2.0.

The integration platform is configured as follows:

apiVersion: camel.apache.org/v1
kind: IntegrationPlatform
metadata:
  annotations:
    camel.apache.org/operator.id: camel-k
  labels:
    app: camel-k
  name: cs
spec:
  build:
    maven:
      settings:
        secretKeyRef:
          key: settings.xml
          name: maven-settings
      settingsSecurity:
        secretKeyRef:
          key: settings-security.xml
          name: maven-settings
    registry:
      address: harbor.192-168-178-58.sslip.io
      insecure: true
      organization: myorg
      secret: harbor
    runtimeVersion: 3.6.0
  cluster: Kubernetes
  traits:
    camel:
      runtimeVersion: 3.6.0

Full stacktrace as logged:

2024-07-15 17:31:12,191 ERROR [io.qua.run.Application] (main) Failed to start application (with profile [prod]): java.lang.RuntimeException: Failed to start quarkus
        at io.quarkus.runner.ApplicationImpl.doStart(Unknown Source)
        at io.quarkus.runtime.Application.start(Application.java:101)
        at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:111)
        at io.quarkus.runtime.Quarkus.run(Quarkus.java:71)
        at io.quarkus.runtime.Quarkus.run(Quarkus.java:44)
        at io.quarkus.runtime.Quarkus.run(Quarkus.java:124)
        at io.quarkus.runner.GeneratedMain.main(Unknown Source)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at io.quarkus.bootstrap.runner.QuarkusEntryPoint.doRun(QuarkusEntryPoint.java:61)
        at io.quarkus.bootstrap.runner.QuarkusEntryPoint.main(QuarkusEntryPoint.java:32)
Caused by: java.lang.NoClassDefFoundError: javax/ws/rs/Path
        at si.mazi.rescu.RestInvocationHandler.<init>(RestInvocationHandler.java:59)
        at si.mazi.rescu.RestProxyFactory.createProxy(RestProxyFactory.java:47)
        at si.mazi.rescu.RestProxyFactoryImpl.createProxy(RestProxyFactoryImpl.java:9)
        at org.knowm.xchange.client.ExchangeRestProxyBuilder.build(ExchangeRestProxyBuilder.java:80)
        at org.knowm.xchange.binance.service.BinanceBaseService.<init>(BinanceBaseService.java:37)
        at org.knowm.xchange.binance.service.BinanceMarketDataServiceRaw.<init>(BinanceMarketDataServiceRaw.java:23)
        at org.knowm.xchange.binance.service.BinanceMarketDataService.<init>(BinanceMarketDataService.java:28)
        at org.knowm.xchange.binance.BinanceExchange.initServices(BinanceExchange.java:29)
        at org.knowm.xchange.BaseExchange.applySpecification(BaseExchange.java:108)
        at org.knowm.xchange.binance.BinanceExchange.applySpecification(BinanceExchange.java:72)
        at org.knowm.xchange.ExchangeFactory.createExchange(ExchangeFactory.java:110)
        at org.knowm.xchange.ExchangeFactory.createExchange(ExchangeFactory.java:53)
        at org.apache.camel.component.xchange.XChangeComponent.createExchange(XChangeComponent.java:64)
        at org.apache.camel.component.xchange.XChangeComponent.getOrCreateXChange(XChangeComponent.java:72)
        at org.apache.camel.component.xchange.XChangeComponent.createEndpoint(XChangeComponent.java:43)
        at org.apache.camel.support.DefaultComponent.createEndpoint(DefaultComponent.java:170)
        at org.apache.camel.impl.engine.AbstractCamelContext.doGetEndpoint(AbstractCamelContext.java:804)
        at org.apache.camel.impl.engine.AbstractCamelContext.getEndpoint(AbstractCamelContext.java:738)
        at org.apache.camel.support.CamelContextHelper.resolveEndpoint(CamelContextHelper.java:123)
        at org.apache.camel.reifier.SendReifier.resolveEndpoint(SendReifier.java:45)
        at org.apache.camel.reifier.SendReifier.createProcessor(SendReifier.java:37)
        at org.apache.camel.reifier.ProcessorReifier.makeProcessor(ProcessorReifier.java:864)
        at org.apache.camel.reifier.ProcessorReifier.addRoutes(ProcessorReifier.java:604)
        at org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:213)
        at org.apache.camel.reifier.RouteReifier.createRoute(RouteReifier.java:76)
        at org.apache.camel.impl.DefaultModelReifierFactory.createRoute(DefaultModelReifierFactory.java:49)
        at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:724)
        at org.apache.camel.component.kamelet.KameletComponent$LifecycleHandler.createRouteForEndpoint(KameletComponent.java:416)
        at org.apache.camel.component.kamelet.KameletComponent$LifecycleHandler.onContextInitialized(KameletComponent.java:430)
        at org.apache.camel.impl.engine.AbstractCamelContext.doInit(AbstractCamelContext.java:2360)
        at org.apache.camel.quarkus.core.FastCamelContext.doInit(FastCamelContext.java:176)
        at org.apache.camel.support.service.BaseService.init(BaseService.java:78)
        at org.apache.camel.impl.engine.AbstractCamelContext.init(AbstractCamelContext.java:1983)
        at org.apache.camel.support.service.BaseService.start(BaseService.java:105)
        at org.apache.camel.impl.engine.AbstractCamelContext.start(AbstractCamelContext.java:2002)
        at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:208)
        at org.apache.camel.quarkus.main.CamelMain.doStart(CamelMain.java:94)
        at org.apache.camel.support.service.BaseService.start(BaseService.java:113)
        at org.apache.camel.quarkus.main.CamelMain.startEngine(CamelMain.java:140)
        at org.apache.camel.quarkus.main.CamelMainRuntime.start(CamelMainRuntime.java:49)
        at org.apache.camel.quarkus.core.CamelBootstrapRecorder.start(CamelBootstrapRecorder.java:45)
        at io.quarkus.deployment.steps.CamelBootstrapProcessor$boot173480958.deploy_0(Unknown Source)
        at io.quarkus.deployment.steps.CamelBootstrapProcessor$boot173480958.deploy(Unknown Source)
        ... 13 more
Caused by: java.lang.ClassNotFoundException: javax.ws.rs.Path
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
        at io.quarkus.bootstrap.runner.RunnerClassLoader.loadClass(RunnerClassLoader.java:115)
        at io.quarkus.bootstrap.runner.RunnerClassLoader.loadClass(RunnerClassLoader.java:65)
        ... 56 more

Please let me know in case you need additional information.

mwmahlberg commented 1 month ago

Updating the runtime to 3.8.1 solved the problem.

oscerd commented 1 month ago

This is a problem in the Camel K runtime. If you run the Kamelet in pure Camel with Jbang it will work out of the box. Eventually this should go in Camel K/Camel Quarkus issues. Thanks for reporting.