“线程中的渐变异常”;“主要”;java.lang.NoClassDefFoundError:org/slf4j/LoggerFactory

“线程中的渐变异常”;“主要”;java.lang.NoClassDefFoundError:org/slf4j/LoggerFactory,java,gradle,slf4j,intellij-idea-2016,Java,Gradle,Slf4j,Intellij Idea 2016,我已经在我的项目中尝试了三天,并创建了一个简单的项目进行测试。我在这里搜索了非常类似的问题,但没有找到任何有助于解决我遇到的错误的方法。我甚至对我的Fedora 25进行了重新格式化,因为它可以在Windows10上运行,但仍然一无所获。我还启用了Intellij-2016.3.4注释处理中的设置和其他设置,根据其他答案,注释处理应已修复,但不会改变任何内容。请任何帮助将被感激 线程“main”java.lang.NoClassDefFoundError中出现异常: org/slf4j/Logg

我已经在我的项目中尝试了三天,并创建了一个简单的项目进行测试。我在这里搜索了非常类似的问题,但没有找到任何有助于解决我遇到的错误的方法。我甚至对我的Fedora 25进行了重新格式化,因为它可以在Windows10上运行,但仍然一无所获。我还启用了Intellij-2016.3.4注释处理中的设置和其他设置,根据其他答案,注释处理应已修复,但不会改变任何内容。请任何帮助将被感激

线程“main”java.lang.NoClassDefFoundError中出现异常: org/slf4j/LoggerFactory位于 com.sammy.CheckLog.(CheckLog.java:8)由以下原因引起: java.lang.ClassNotFoundException:org.slf4j.LoggerFactory 位于java.net.URLClassLoader.findClass(URLClassLoader.java:381) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在com.intellij.rt.execution.application.AppMain.main(AppMain.java:123)sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 还有一个

下面是我的build.gradle文件,其中定义了lombok以及相关的slf4j依赖项

 /*
 * This build file was generated by the Gradle 'init' task.
 *
 * This generated file contains a commented-out sample Java project to get you started.
 * For more details take a look at the Java Quickstart chapter in the Gradle
 * user guide available at https://docs.gradle.org/3.4/userguide/tutorial_java_projects.html
 */

// Apply the java plugin to add support for Java
apply plugin: 'java'
apply plugin: 'application'

mainClassName = 'com.sammy.CheckLog'

// In this section you declare where to find the dependencies of your project
repositories {
    // Use 'jcenter' for resolving your dependencies.
    // You can declare any Maven/Ivy/file repository here.
    jcenter()
}

// In this section you declare the dependencies for your production and test code
dependencies {
    // The production code uses the SLF4J logging API at compile time
    compileOnly 'org.slf4j:slf4j-api:1.7.24'
    compileOnly 'org.slf4j:slf4j-simple:1.7.24'
    compileOnly 'org.projectlombok:lombok:1.16.14'

    // Declare the dependency for your favourite test framework you want to use in your tests.
    // TestNG is also supported by the Gradle Test task. Just change the
    // testCompile dependency to testCompile 'org.testng:testng:6.8.1' and add
    // 'test.useTestNG()' to your build script.
    testCompile 'junit:junit:4.12'
}

更新:更改为“编译”后,它在命令行上运行,而不是从Intellij运行,因为它似乎使用自己的运行时来解释它,而gradle使用我定义的运行时。jdk1.8.0_121

更改:
compileOnly'org.slf4j:slf4j api:1.7.24'
编译'org.slf4j:slf4j api:1.7.24'

更改:
编译'org.slf4j:slf4j api:1.7.24'
编译'org.slf4j:slf4j:1.7.24'
问题是您在运行时没有添加SL4J文件,因为你只用它来编译。 将SLF4J依赖项的build.gradle文件更改为
compile
,而不是
compileOnly

compile 'org.slf4j:slf4j-api:1.7.24'
compile 'org.slf4j:slf4j-simple:1.7.24'

问题在于,您没有在运行时添加SL4JJAR文件,因为您仅将其用于编译。 将SLF4J依赖项的build.gradle文件更改为
compile
,而不是
compileOnly

compile 'org.slf4j:slf4j-api:1.7.24'
compile 'org.slf4j:slf4j-simple:1.7.24'

我有一些问题。IntelliJ Idea 2016.3和Gradle 3.4.1

已使用以下内容初始化新项目:

gradleinit——键入java应用程序

为build.gradle添加了几行代码


编译“org.slf4j:slf4j api:1.7.24”
编译“org.slf4j:slf4j simple:1.7.24”

在App.java中添加了行:


...
静态记录器Logger=LoggerFactory.getLogger(App.class);
...

现在你们在想法上有了错误,但在终端项目中运行正常(使用gradle运行)


更新:我发现如果我用gradle 3.3(不是3.4.1)初始化一个项目,那么错误就会消失。可能这种行为与此问题有关:

我有一些问题。IntelliJ Idea 2016.3和Gradle 3.4.1

已使用以下内容初始化新项目:

gradleinit——键入java应用程序

为build.gradle添加了几行代码


编译“org.slf4j:slf4j api:1.7.24”
编译“org.slf4j:slf4j simple:1.7.24”

在App.java中添加了行:


...
静态记录器Logger=LoggerFactory.getLogger(App.class);
...

现在你们在想法上有了错误,但在终端项目中运行正常(使用gradle运行)


更新:我发现如果我用gradle 3.3(不是3.4.1)初始化一个项目,那么错误就会消失。可能此行为与此问题有关:

谢谢!我现在可以在命令行上运行它了。但是,当我使用Intellij运行它时,它仍然会抛出相同的错误消息,因为我在Intellij中有一些数据库应用程序来运行端到端测试,所以我需要它也在那里工作。@Sammy65它也应该在Intellij中工作。你能刷新你的项目吗?我已经刷新了好几次,但仍然没有更新。谢谢!我现在可以在命令行上运行它了。但是,当我使用Intellij运行它时,它仍然会抛出相同的错误消息,因为我在Intellij中有一些数据库应用程序来运行端到端测试,所以我需要它也在那里工作。@Sammy65它也应该在Intellij中工作。你能刷新你的项目吗?我已经刷新了好几次,但仍然没有更新。谢谢!我现在可以在命令行上运行它了。但是,当我使用Intellij运行它时,它仍然会抛出相同的错误消息,因为我在Intellij中有一些数据库应用程序可以运行端到端测试,所以我也需要它在那里工作。尝试在Intellij中重新导入项目。它仍然失败:-('at com.Intellij.rt.execution.application.AppMain.main(AppMain.java:123)stacktrace中缺少这一行,它告诉我Intellij试图使用自己的运行库来执行代码,而不是gradle用来运行程序的jre定义的代码。有没有办法改变这一点?在我的机器上做了一个测试:模拟了相同的问题,然后我转到“gradle项目”选项卡并单击“刷新所有Gradle项目”按钮,它通过更正导入的库实现了这一目的。(我将文件作为Gradle项目导入,但在没有IntelliJ配置的情况下从项目文件夹中打开build.Gradle)谢谢!我现在可以在命令行上运行它了。但是,当我使用Intellij运行它时,它仍然会抛出相同的错误消息,因为我在Intellij中有一些数据库应用程序可以运行端到端测试,所以我需要它也在那里工作。尝试在Intellij中重新导入项目。它仍然失败:-('at com.intellij.rt.execution.application.AppMain.main(AppMain.java:123)stacktrace中缺少这一行,它告诉我Intellij试图使用自己的运行库来执行代码,而不是gradle用来运行程序的jre定义的代码。有没有办法改变这一点?在我的机器上做了一个测试:模拟了相同的问题,然后我去了“gradle项目”