当前位置: 首页 > 知识库问答 >
问题:

IntelliJ找不到带gradle的slf4j记录器

康弘义
2023-03-14

我有一个使用gradle的项目,我想使用slf4j提供的记录器。

在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构建这个项目,shadow插件会生成一个胖jar,它可以很好地从控制台运行,它包括记录器,但是从IDE中我很难找到LoggerFactory。我在这里读到,我应该将记录器添加到类路径中,但由于我没有显式地包含jar,而不是将其标记为依赖项,因此我不确定这将如何实现。

请告知。干杯

共有1个答案

杜砚
2023-03-14

类路径不同步,这里的选项很少

  • 在IntelliJ中刷新项目(IntelliJ的旧版本不适合gradle集成)

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

 类似资料:
  • 我正在尝试构建和运行一个在IntelliJ中使用slf4j日志记录的Spark网络服务器。它在最初用于添加日志记录的计算机上构建良好(也在IntelliJ中),但在我的机器上没有。 这是完整的<code>构建。gradle文件(请参阅,了解使用记录器的部分: 下面是使用记录器的代码: 这是我得到的错误: 我在StackOverflow上看了几个问题,但似乎都没有解决问题: java.lang.No

  • 我知道使用SLF4J和Log4j2作为记录器实现应该很容易。 您只需要将jar添加到类路径中。 我原以为我是这样做的,但我现在仍在努力 我的的关键部分 然后是 然后,查看lib文件夹 但是我没有得到相应的错误消息。 我正在使用 Eclipse版本:2020-09(4.17.0) 和

  • 我已将 Log4J2 添加到我的应用程序中。我通过LIB将所有Log4J2.jar文件复制到,并创建了Log4J2.xml文件来支持它。我的代码已更新为导入必要的日志管理器和记录器 API。然后,我添加了静态的最终记录器方法,并在我的代码中调用了记录器 API。一切都在Eclipse中编译文件。我继续在 DEV 计算机上启动服务器以对其进行验证。启动服务器后,我收到以下错误: 我的配置有什么问题?