simple org logger log4j12 for java maven gradle jar slf4j

log4j12 - Causado por: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory



slf4j-log4j12 maven (3)

JVM no puede encontrar dependencias en classpath porque obviamente no están en classpath. De forma predeterminada, Gradle y Maven agregan solo sus clases a un jar y debe especificar rutas a las dependencias manualmente con el argumento -cp . Si quieres construir un frasco gordo, puedes usar ShadowJar con Gradle y Shade con Maven.

algunos problemas con java y slf4j Proyecto hecho usando idea y está bien. Pero en caso de que intente hacer jar con Gradle, tengo algunos problemas.

build.gradle

group ''test.test'' version ''1.0-SNAPSHOT'' apply plugin: ''java'' sourceCompatibility = 1.8 repositories { mavenCentral() } dependencies { testCompile group: ''junit'', name: ''junit'', version: ''4.11'' compile ''org.slf4j:slf4j-api:1.7.20'' compile ''ch.qos.logback:logback-classic:1.1.7'' } jar { manifest { attributes ''Main-Class'': ''Test'' } }

Test.java

import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class Test { private static final Logger LOGGER = LoggerFactory.getLogger(Test.class); public static void main(String[] args) { LOGGER.info("info"); } }

Terminal:

gradle build java -jar target/HttpServer-1.0-SNAPSHOT.jar

Salida:

Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory at HttpServerHH.Main.<clinit>(Main.java:15) Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 1 more

Traté de usar gradle / maven (paquete mvn) el mismo problema. Algunas razones por las que no puede encontrar Logger y LoggerFactory en classpath.


dependencies { compile group: ''commons-collections'', name: ''commons-collections'', version: ''3.2'' testCompile group: ''junit'', name: ''junit'', version: ''4.+'' compile ''ch.qos.logback:logback-core:1.1.6'' compile ''ch.qos.logback:logback-classic:1.1.6'' compile ''org.slf4j:slf4j-api:1.7.18'' }


Gracias Michael por recordar sobre el frasco gordo. Después de tu comentario, traté de buscar en google: "gradle build fat jar" y luego modificó mi build.gradle

jar { from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } manifest { attributes ''Main-Class'': ''Test'' } }