2017-06-02 80 views
0

我有一个项目,我使用gradle,并且我想使用slf4j提供的记录器。IntelliJ无法找到slf4j记录器与gradle

Android Studio中运行产生以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory 
    at com.mypkg.Main.<clinit>(Main.java:9) 
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 

我对项目的build.gradle:

task wrapper(type: Wrapper) { 
    gradleVersion = '3.5' 
} 

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.0' 
    } 
} 

apply plugin: 'com.github.johnrengelman.shadow' 
apply plugin: 'java' 
apply plugin: 'application' 

jar { 
    manifest { 
     attributes 'Main-Class': "Main" 
    } 
} 

shadowJar { 
    mergeServiceFiles('META-INF/spring.*') 
} 


mainClassName = 'com.mypkg.Main' 

dependencies { 
    compile 'com.squareup:otto:1.3.5' 
    compile 'com.fasterxml.jackson.core:jackson-databind:2.4.4' 
    compile 'com.squareup.okhttp:okhttp:2.7.4' 
    compile 'com.squareup.okhttp:okhttp-ws:2.7.4' 
    compile 'com.parse.bolts:bolts-android:1.2.1' 
    compile 'org.json:json:20140107' 
    compile 'org.bouncycastle:bcprov-jdk15on:1.52' 
    compile 'commons-codec:commons-codec:1.10' 
    compile 'org.scream3r:jssc:2.8.0' 

    compile 'ch.qos.logback:logback-classic:1.1.3' 
    compile 'ch.qos.logback:logback-core:1.1.3' 

    compile 'org.json:json:20140107' 
    compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.0.1' 

    compile group: 'org.springframework.shell', name: 'spring-shell', version: '1.2.0.RELEASE' 
    compile group: 'org.springframework', name: 'spring-context-support', version: '4.2.4.RELEASE' 
    compile group: 'org.springframework', name: 'spring-core', version: '4.2.4.RELEASE' 
    compile group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.7.25' 


} 

sourceCompatibility = "1.8" 
targetCompatibility = "1.8" 

如果我建这个项目的gradle产出,影子插件生成脂肪罐子,它从控制台很好地运行,它包括记录器,但是从IDE我很难找到LoggerFactory。我在这里读到应该将记录器添加到类路径中,但由于我没有明确包含jar,而不是将其标记为依赖项,所以我不确定这是如何实现的。

请指教。 干杯!

+0

script'apply plugin:'idea'' alt + f12并运行'gradle idea',这将重新生成.iml文件和类路径。或者尝试安装最新版本的IntelliJ,其中gradle集成更好一点 – LazerBanana

回答

0

类路径是不同步的,这里几个选项

  • 在刷新的IntelliJ项目(旧版本的IntelliJ的不符合gradle这个整合的理想)
  • 添加apply plugin: 'idea'到您的build.gradle然后运行gradle idea再生项目中的.iml.ipr.iws文件和gradle这个回暖的依赖。(不理想!see why
  • 下载最新v IntelliJ和重做选项1

编辑:谢谢@CrazyCoder这个提示。

+1

我接受了这个答案,但我对此有点偏见,因为它不是确切的答案,但它让我对它有所了解。首先,我错误地将问题标记为intellij-idea,尽管在我告诉我使用android studio的问题中。你提到刷新,但我有最新版本的Android工作室,所以我想在他们的网站上爬行,然后我给了它一个想法尝试,这没有任何问题运行我的项目没有任何变化。 干杯:) – pszent

+0

不要使用'gradle idea',[看这里为什么](http://stackoverflow.com/a/42518961/104891)。 – CrazyCoder