Open
Description
As reported at micronaut-projects/micronaut-core#5095, a Micronat 2.4.0
demo application can be run with Layrry when a single layer is used
$ larry --layers-config https://raw.githubusercontent.com/aalmiray/micronaut-layrry-demo/main/layers-single.toml --verbose
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:///Users/aalmiray/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/Users/aalmiray/dev/github/layrry/layrry-launcher/target/distributions/layrry-launcher-1.0.0-SNAPSHOT-dist/layrry-launcher-1.0.0-SNAPSHOT/lib/slf4j-simple-1.7.29.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]
16:41:22.058 [main] INFO i.m.context.env.DefaultEnvironment - Established active environments: [cli]
running ...
Hi!
But breaks down when multiple layers are used
$ layrry --layers-config https://raw.githubusercontent.com/aalmiray/micronaut-layrry-demo/main/layers.toml --verbose
Exception in thread "main" java.lang.RuntimeException: Couldn't run module main class
at org.moditect.layrry.internal.LayersImpl.run(LayersImpl.java:162)
at org.moditect.layrry.Layrry.launch(Layrry.java:81)
at org.moditect.layrry.Layrry.run(Layrry.java:36)
at org.moditect.layrry.launcher.LayrryLauncher.launch(LayrryLauncher.java:102)
at org.moditect.layrry.launcher.LayrryLauncher.main(LayrryLauncher.java:46)
Caused by: java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.moditect.layrry.internal.LayersImpl.run(LayersImpl.java:159)
... 4 more
Caused by: java.lang.NoClassDefFoundError: io/micronaut/configuration/picocli/PicocliRunner
at com.example.demo@0.1/com.example.DemoCommand.main(DemoCommand.java:15)
... 9 more
Caused by: java.lang.ClassNotFoundException: io.micronaut.configuration.picocli.PicocliRunner
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)
at java.base/jdk.internal.loader.Loader.loadClass(Loader.java:544)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 10 more
The multi layer configuration file looks like this
[layers.micronaut]
modules = [
"ch.qos.logback:logback-classic:1.2.3",
"ch.qos.logback:logback-core:1.2.3",
"com.fasterxml.jackson.core:jackson-annotations:2.11.2",
"com.fasterxml.jackson.core:jackson-core:2.11.2",
"com.fasterxml.jackson.core:jackson-databind:2.11.2",
"com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.11.2",
"com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.11.2",
# "com.github.spotbugs:spotbugs-annotations:4.0.3",
# "com.google.code.findbugs:jsr305:3.0.2",
"info.picocli:picocli:4.6.1",
"io.micronaut.picocli:micronaut-picocli:3.2.0",
"io.micronaut:micronaut-aop:2.4.0",
"io.micronaut:micronaut-context:2.4.0",
"io.micronaut:micronaut-core-reactive:2.4.0",
"io.micronaut:micronaut-core:2.4.0",
"io.micronaut:micronaut-http:2.4.0",
"io.micronaut:micronaut-inject:2.4.0",
# "io.micronaut:micronaut-runtime:2.4.0",
"io.micronaut:micronaut-validation:2.4.0",
"io.reactivex.rxjava2:rxjava:2.2.10",
"javax.annotation:javax.annotation-api:1.3.2",
"javax.inject:javax.inject:1",
"javax.validation:validation-api:2.0.1.Final",
"org.reactivestreams:reactive-streams:1.0.3",
"org.slf4j:slf4j-api:1.7.26",
"org.yaml:snakeyaml:1.26"]
[layers.app]
parents = ["micronaut"]
modules = ["com.example:demo:0.1"]
[main]
module = "com.example.demo"
class = "com.example.DemoCommand"
The io.micronaut.configuration.picocli.PicocliRunner
class is found in the io.micronaut.picocli:micronaut-picocli:3.2.0
dependency, defined in the micronaut
layer, which is a parent of the app
layer.
Metadata
Metadata
Assignees
Labels
No labels
3534
No type