簡體   English   中英

引起:java.lang.ClassNotFoundException:org.slf4j.LoggerFactory

[英]Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory

java和slf4j的一些問題使用想法制作項目,沒關系。 但是如果我嘗試用gradle制作jar,我會遇到一些問題。

的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");
    }
}

終奌站:

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

輸出:

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

我試圖使用gradle / maven(mvn包)同樣的問題。 有些原因它無法在classpath中找到Logger和LoggerFactory。

感謝邁克爾記住脂肪罐。 在您的評論嘗試谷歌:“gradle build fat jar”之后,它修改了我的build.gradle

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

JVM無法在類路徑上找到依賴關系,因為它們顯然不在類路徑上。 默認情況下,Gradle和Maven只將您的類添加到jar中,您必須使用-cp參數手動指定依賴項的路徑。 如果你想構建一個胖罐,你可以使用帶有Gradle的ShadowJar和帶有Maven的Shade

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'
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM