2017-06-02 62 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