[
https://issues.apache.org/jira/browse/CAMEL-18603?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17615896#comment-17615896
]
Grzegorz Grzybek edited comment on CAMEL-18603 at 10/11/22 3:05 PM:
--------------------------------------------------------------------
The problem is that there are two classloaders involved:
* one is the app classloader containing JARs being part of {{-classpath}}
prepared by JBang itself - this involves all transitive dependencies of the
{{DEPS}} specified in {{dsl/camel-jbang/camel-jbang-main/dist/CamelJBang.java}}
* the other one is
{{org.apache.camel.main.download.DependencyDownloaderClassLoader}} prepared for
the camel context created for {{jbang camel run}} command.
camel-kamelet-utils was not seeing the amazonsdk jars, because of two different
classloaders.
When I removed {{org.apache.camel.kamelets:camel-kamelets-utils}} from
{{main.CamelJBang}} and added it to the route itself:
{code:yaml}
# camel-k: dependency=mvn:software.amazon.awssdk:dynamodb:2.17.290
# camel-k: dependency=mvn:org.apache.camel.kamelets:camel-kamelets-utils:0.9.0
- route:
from:
uri: "kamelet:kafka-not-secured-source"
...
{code}
everything worked fine.
was (Author: gzres):
The problem is that there are two classloaders involved:
* one is the app classloader containing JARs being part of {{-classpath}}
prepared by JBang itself - this involves all transitive dependencies of the
{{DEPS}} specified in {{dsl/camel-jbang/camel-jbang-main/dist/CamelJBang.java}}
* the other one is
{{org.apache.camel.main.download.DependencyDownloaderClassLoader}} prepared for
the camel context created for {{jbang camel run}} command.
camel-kamelet-utils was not seeing the amazonsdk jars, because of two different
classloaders.
When I removed {{org.apache.camel.kamelets:camel-kamelets-utils}} from
{{main.CamelJBang}} and added it to the route itself:
```yaml
# camel-k: dependency=mvn:software.amazon.awssdk:dynamodb:2.17.290
# camel-k: dependency=mvn:org.apache.camel.kamelets:camel-kamelets-utils:0.9.0
- route:
from:
uri: "kamelet:kafka-not-secured-source"
...
```
everything worked fine.
> Camel-Jbang: When using aws-ddb-sink Kamelet dependency are not resolved
> ------------------------------------------------------------------------
>
> Key: CAMEL-18603
> URL: https://issues.apache.org/jira/browse/CAMEL-18603
> Project: Camel
> Issue Type: Bug
> Components: camel-jbang
> Affects Versions: 3.19.0
> Reporter: Andrea Cosentino
> Priority: Major
> Fix For: 3.20.0
>
> Attachments: ComponentsConfiguration-1.class,
> ComponentsConfiguration.class, ComponentsConfiguration.kt,
> DataFormatsConfiguration-1.class, DataFormatsConfiguration.class,
> DataFormatsConfiguration.kt, KotlinCompilationConfiguration$1$1-1.class,
> KotlinCompilationConfiguration$1$1.class,
> KotlinCompilationConfiguration$1$2-1.class,
> KotlinCompilationConfiguration$1$2.class,
> KotlinCompilationConfiguration$1-1.class,
> KotlinCompilationConfiguration$1.class,
> KotlinCompilationConfiguration-1.class, KotlinCompilationConfiguration.class,
> KotlinCompilationConfiguration.kt, KotlinConstants.kt,
> KotlinConstantsKt-1.class, KotlinConstantsKt.class, KotlinDSL-1.class,
> KotlinDSL.class, KotlinDSL.kt,
> KotlinRoutesBuilderLoader$WhenMappings-1.class,
> KotlinRoutesBuilderLoader$WhenMappings.class,
> KotlinRoutesBuilderLoader$doLoadEndpointRouteBuilder$$inlined$createJvmCompilationConfigurationFromTemplate$default$1-1.class,
>
> KotlinRoutesBuilderLoader$doLoadEndpointRouteBuilder$$inlined$createJvmCompilationConfigurationFromTemplate$default$1.class,
> KotlinRoutesBuilderLoader$doLoadEndpointRouteBuilder$result$1-1.class,
> KotlinRoutesBuilderLoader$doLoadEndpointRouteBuilder$result$1.class,
> KotlinRoutesBuilderLoader-1.class, KotlinRoutesBuilderLoader.class,
> KotlinRoutesBuilderLoader.kt, KotlinRoutesBuilderLoaderTest.class,
> KotlinRoutesBuilderLoaderTest.kt, LICENSE.txt,
> LanguagesConfiguration-1.class, LanguagesConfiguration.class,
> LanguagesConfiguration.kt, MANIFEST.MF, MyBean.class, MyBean.kt, NOTICE.txt,
> RegistryConfiguration-1.class, RegistryConfiguration.class,
> RegistryConfiguration.kt, RestConfiguration-1.class, RestConfiguration.class,
> RestConfiguration.kt, RestVerbConfiguration-1.class,
> RestVerbConfiguration.class, RestVerbConfiguration.kt,
> class-attributes.tab.len, class-attributes.tab.values.at,
> class-fq-name-to-source.tab, class-fq-name-to-source.tab.keystream,
> class-fq-name-to-source.tab.keystream.len, class-fq-name-to-source.tab.len,
> class-fq-name-to-source.tab.values.at, class-fq-name-to-source.tab_i,
> class-fq-name-to-source.tab_i.len, constants.tab, constants.tab.keystream,
> constants.tab.keystream.len, constants.tab.len, constants.tab.values.at,
> constants.tab_i, constants.tab_i.len, counters.tab, file-to-id.tab,
> file-to-id.tab.keystream, file-to-id.tab.keystream.len, file-to-id.tab.len,
> file-to-id.tab.values.at, file-to-id.tab_i, file-to-id.tab_i.len,
> id-to-file.tab, id-to-file.tab.keystream, id-to-file.tab.keystream.len,
> id-to-file.tab.len, id-to-file.tab.values.at, id-to-file.tab_i,
> id-to-file.tab_i.len, inline-functions.tab, inline-functions.tab.keystream,
> inline-functions.tab.keystream.len, inline-functions.tab.len,
> inline-functions.tab.values.at, inline-functions.tab_i,
> inline-functions.tab_i.len, internal-name-to-source.tab,
> internal-name-to-source.tab.keystream,
> internal-name-to-source.tab.keystream.len, internal-name-to-source.tab.len,
> internal-name-to-source.tab.values.at, internal-name-to-source.tab_i,
> internal-name-to-source.tab_i.len, jandex.idx, kotlin-dsl-1.json,
> kotlin-dsl.adoc, kotlin-dsl.json, kts, kts-1, last-build.bin,
> log4j2-test-1.properties, log4j2-test.properties, lookups.tab,
> lookups.tab.keystream, lookups.tab.keystream.len, lookups.tab.len,
> lookups.tab.values.at, lookups.tab_i, lookups.tab_i.len,
> org.apache.felix_maven-bundle-plugin_manifest_xx, other-1.properties,
> other.properties, package-parts.tab, package-parts.tab.keystream,
> package-parts.tab.keystream.len, package-parts.tab.len,
> package-parts.tab.values.at, package-parts.tab_i, package-parts.tab_i.len,
> pom.properties, pom.xml, proto.tab, proto.tab.keystream,
> proto.tab.keystream.len, proto.tab.len, proto.tab.values.at, proto.tab_i,
> proto.tab_i.len, routes-1.kts, routes-new-1.kts, routes-new.kts,
> routes-with-beans-1.kts, routes-with-beans.kts,
> routes-with-components-configuration-1.kts,
> routes-with-components-configuration-error-1.kts,
> routes-with-components-configuration-error.kts,
> routes-with-components-configuration.kts,
> routes-with-dataformats-configuration-1.kts,
> routes-with-dataformats-configuration.kts, routes-with-endpoint-dsl-1.kts,
> routes-with-endpoint-dsl.kts, routes-with-error-handler-1.kts,
> routes-with-error-handler.kts, routes-with-languages-configuration-1.kts,
> routes-with-languages-configuration.kts, routes-with-rest-1.kts,
> routes-with-rest.kts, routes.kts, snapshots.bin, source-snapshot.tab,
> source-snapshot.tab.keystream, source-snapshot.tab.keystream.len,
> source-snapshot.tab.len, source-snapshot.tab.values.at,
> source-snapshot.tab_i, source-snapshot.tab_i.len, source-to-classes.tab,
> source-to-classes.tab.keystream, source-to-classes.tab.keystream.len,
> source-to-classes.tab.len, source-to-classes.tab.values.at,
> source-to-classes.tab_i, source-to-classes.tab_i.len, source-to-output.tab,
> source-to-output.tab.keystream, source-to-output.tab.keystream.len,
> source-to-output.tab.len, source-to-output.tab.values.at,
> source-to-output.tab_i, source-to-output.tab_i.len, subtypes.tab,
> subtypes.tab.keystream, subtypes.tab.keystream.len, subtypes.tab.len,
> subtypes.tab.values.at, subtypes.tab_i, subtypes.tab_i.len, supertypes.tab,
> supertypes.tab_i, supertypes.tab_i.len
>
>
> If you have a route like:
> {code:java}
> # camel-k: dependency=mvn:software.amazon.awssdk:dynamodb:2.17.290
> - route:
> from:
> uri: "kamelet:kafka-not-secured-source"
> parameters:
> bootstrapServers: localhost:9092
> topic: ddb-topic
> steps:
> - to:
> uri: "kamelet:aws-ddb-sink"
> parameters:
> accessKey: access
> secretKey: sec
> region: reg
> table: "test"
> {code}
> Then camel-jbang will fail with
> {code:java}
> Caused by: java.lang.ClassNotFoundException:
> software.amazon.awssdk.services.dynamodb.model.AttributeValue
> at
> java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
> at
> java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
> at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
> ... 44 more
> {code}
> the command is: jbang run --fresh -Dcamel.jbang.version=3.19.0
> camel@apache/camel run kafka-source-ddb.yaml
> This will fail with 3.20.0-SNAPSHOT too and by using --deps from cli
--
This message was sent by Atlassian Jira
(v8.20.10#820010)