2017-06-02 6 views
0

私はgradleを使用しているプロジェクトを持っていますので、slf4jが提供するロガーを使いたいと思います。アンドロイドStudioで実行 IntelliJはgradleを持つslf4jロガーを見つけることができません

は、次のエラーを生成します。

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のと、このプロジェクトをビルドする場合には、影のプラグインは脂肪のjarファイルを生成し、コンソールからうまく動くと、それにはロガーが含まれていますが、IDEからはLoggerFactoryを見つけるのが難しいです。ここでは、クラスパスにロガーを追加する必要があることをここで読んでいますが、依存関係としてマークするのではなく、明示的にjarを含めるわけではないので、どうすればこのことが可能かはわかりません。

お知らせください。 乾杯!

+0

スクリプト 'apply plugin: 'idea'' alt + f12を実行し、' gradle idea'を実行すると、.imlファイルとクラスパスが再生成されます。または、グラデルインテグレーションが少し良くなったIntelliJの最新バージョンをインストールしてみてください。 – LazerBanana

答えて

0

クラスパスが同期している、ここではいくつかのオプション

  • は、IntelliJのプロジェクト(のIntelliJの古いバージョンはGradleの統合により、理想的ではない)
  • あなたのbuild.gradleにapply plugin: 'idea'を追加してを更新しますプロジェクトで.iml.ipr.iwsファイルを再生成し、Gradleの依存関係からをピックアップしてgradle ideaを実行します。(ない理想的!see why
  • 最新のVをダウンロードIntelliJとREDOオプションの適用1

編集:このヒントのための@CrazyCoderありがとう。

+1

私はこの回答を受け入れましたが、私はちょっと偏っていますが、それは正確な答えではありませんでした。まず、私は間違ってintellij-アイデアとして質問をマークしましたが、私はアンドロイドスタジオを使用していたと言いました。あなたはリフレッシュしていると言いましたが、私はアンドロイドスタジオの最新バージョンを持っていましたので、自分のサイトをクロールすると思っていました。 乾杯) – pszent

+0

'gradle idea'は使用しないでください。[ここをクリックしてください](http://stackoverflow.com/a/42518961/104891)。 – CrazyCoder

関連する問題