Intellij no incluye la dependencia de gradle en classpath al ejecutar una aplicación

IntelliJ no incluye la dependencia de logback-classic en classpath al ejecutar la aplicación desde IDE (es una aplicación de kotlin, pero no debería importar). Mi compilation gradle contiene una línea:

compile group: 'ch.qos.logback', name: 'logback-classic', version: '1.+' 

La dependencia se enumera correctamente en "Bibliotecas externas" en IntelliJ.

Cuando trato de hacer una reference manual a una class que proporciona la dependencia en el código fuente, el comstackdor no se queja y comstack el código correctamente. Sin embargo, cuando ejecuto la aplicación obtengo ClassNotFoundException.

 //This import is provided by logback-classic library import org.slf4j.impl.StaticLoggerBinder ... // This compiles successfully, but will trigger ClassNotFoundException when run val singleton = StaticLoggerBinder.getSingleton() 

Incluí el código para listr el classpath en time de ejecución:

  val cl = ClassLoader.getSystemClassLoader() val urls = (cl as URLClassLoader).urLs for (url in urls) { System.out.println(url.file) } 

Y la salida, cuando se ejecuta desde IDE, no incluye logback-classic. Muestra de salida:

 ... /Users/knesek/.gradle/caches/modules-2/files-2.1/commons-httpclient/commons-httpclient/3.1/964cd74171f427720480efdec40a7c7f6e58426a/commons-httpclient-3.1.jar /Users/knesek/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-databind/2.8.8/bf88c7b27e95cbadce4e7c316a56c3efffda8026/jackson-databind-2.8.8.jar /Users/knesek/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.module/jackson-module-jaxb-annotations/2.8.8/e2e95efc46d45be4b429b704efbb1d4b89721d3a/jackson-module-jaxb-annotations-2.8.8.jar /Users/knesek/.gradle/caches/modules-2/files-2.1/com.sun.mail/javax.mail/1.5.6/ab5daef2f881c42c8e280cbe918ec4d7fdfd7efe/javax.mail-1.5.6.jar /Users/knesek/.gradle/caches/modules-2/files-2.1/ch.qos.logback/logback-core/1.1.11/88b8df40340eed549fb07e2613879bf6b006704d/logback-core-1.1.11.jar /Users/knesek/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.1.1/98e484e67f913e934559f7f55f0c94be5593f03c/kotlin-stdlib-1.1.1.jar /Users/knesek/.gradle/caches/modules-2/files-2.1/org.springframework/spring-beans/4.3.9.RELEASE/daa5abf3779c8cad1a2910e1ea08e4272489d8ae/spring-beans-4.3.9.RELEASE.jar ... 

Fascinantemente, logback-core está ahí mientras logback-classic no (y logback-core es una dependencia transitiva de logback-classic).

Traté de invalidar InteliJ cahces, rebuild y reiniciar InteliJ. Comstackr gradle y ejecutar el jar funciona bien. ¿Alguna sugerencia?

Parece que esto es un error en InteliJ para el cual presentaré un informe de error. Incluyendo esta respuesta con una solución aquí para cualquier persona que pueda encontrarse con un problema similar.

Parece que cuando hay ciertas combinaciones de dependencies presentes en el classpath, entonces cuando usas la dependencia gradle como esta

 compile group: 'ch.qos.logback', name: 'logback-classic', version: '1.+' 

no se includeá cuando se ejecute desde el IDE. Pero si lo incluye así:

 compile group: 'ch.qos.logback', name: 'logback-classic', version: '1.1.+' 

entonces funciona El primer ejemplo funcionó por un time, hasta que incluí más dependencies.

  • Kotlin: forma idiomática de llamar (Int, Int) -> Int con un par <Int, Int>?
  • Solicitud en Android siempre dando exception de time de espera del socket
  • Assert Variable no es nulo
  • ¿Puedo tener un tipo de devolución diferente en kotlin?
  • Kotlin: cómo el parámetro pnetworkingeterminado en "fun main (parameters: Array <String>)" imprime "guest" sin asignar ningún valor
  • no se puede convertir en org.jetbrains.kotlin.java.model.types.JeClassInitializerExecutableTypeMirror
  • Propiedad protegida abstracta Kotlin
  • ¿Cómo establecer el proxy para Spring AsyncRestTemplate usando Netty4ClientHttpRequestFactory?
  • Comparta el código entre la testing unitaria y las testings de instrumentación cuando use kotlin
  • JOOQ selecciona la expresión
  • ¿Cuál es la forma correcta de crear una nueva instancia de class genérica en kotlin?