$ 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
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.
As reported at https://github.com/micronaut-projects/micronaut-core/issues/5095, a Micronat
2.4.0
demo application can be run with Layrry when a single layer is usedBut breaks down when multiple layers are used
The multi layer configuration file looks like this
The
io.micronaut.configuration.picocli.PicocliRunner
class is found in theio.micronaut.picocli:micronaut-picocli:3.2.0
dependency, defined in themicronaut
layer, which is a parent of theapp
layer.