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

查看:630
本文介绍了引起:java.lang.ClassNotFoundException:org.slf4j.LoggerFactory的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

java和slf4j的一些问题
使用idea创建项目并且没问题。但是,如果我尝试使用gradle制作jar,我遇到了一些问题。



build.gradle

  group'test.test'
version'1.0-SNAPSHOT'

apply plugin:'java'

sourceCompatibility = 1.8

存储库{
mavenCentral()
}

依赖关系{
testCompile组:'junit',名称:'junit',版本:' 4.11'
compile'org.slf4j:slf4j-api:1.7.20'
compile'c​​h.qos.logback:logback-classic:1.1.7'

}

$ b $ jar {
manifest {
属性'Main-Class':'Test'
}
}

Test.java

  import org.slf4j.Logger; 
导入org.slf4j.LoggerFactory;

public class Test {
private static final Logger LOGGER = LoggerFactory.getLogger(Test.class);

public static void main(String [] args){
LOGGER.info(info);


$ / code $ / pre
$ b $终端:

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

输出:

 线程main中的异常java.lang.NoClassDefFoundError: org / slf4j / LoggerFactory 
at HttpServerHH.Main。< clinit>(Main.java:15)
导致:java.lang.ClassNotFoundException:org.slf4j.LoggerFactory $ b $在java。 net.URLClassLoader.findClass(URLClassLoader.java:381)$ b $在java.lang.ClassLoader.loadClass(ClassLoader.java:424)
在sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java: 331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more

我试图使用gradle / maven(mvn package)相同的问题。在classpath中找不到Logger和LoggerFactory的一些原因。

解决方案

感谢Michael回忆有关胖子的事情。在您的评论尝试谷歌:gradle构建脂肪罐,并修改后我的build.gradle

  jar {
来自{
configurations.compile.collect {
it.isDirectory()?它:zipTree(它)
}
}
清单{
属性'Main-Class':'Test'
}
}


some problems with java and slf4j Made project using idea and it is ok. But in case I try to make jar with gradle I have some problems.

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

Terminal:

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

Output:

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

I tried to use gradle/maven (mvn package) the same problem. Some reasons it cannot find Logger and LoggerFactory in classpath.

解决方案

Thanks Michael for remembering about fat jar. After your comment tried to google: "gradle build fat jar" and after it modified my build.gradle

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

这篇关于引起:java.lang.ClassNotFoundException:org.slf4j.LoggerFactory的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆