2017-03-01 3 views
0

Ich habe versucht, dies für drei Tage in meinem Projekt arbeiten und ein einfaches Projekt zu testen. Ich habe hier sehr ähnliche Themen durchsucht, aber nichts gefunden, was mir geholfen hat, den Fehler, den ich erhalte, zu lösen. Ich bin sogar so weit gegangen, meinen Fedora 25 neu zu formatieren, wie es auf einem Windows 10 funktioniert, aber immer noch nichts. Ich habe auch in beiden Einstellungen und anderen Einstellungen in Intellij-2016.3.4 Annotation-Verarbeitung aktiviert, die nach anderen Antworten sollte es behoben haben, aber es ändert nichts. Bitte jede hilfe wird geschätzt !!!Gradle Exception im Thread "Haupt" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory

Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory at com.sammy.CheckLog.(CheckLog.java:8) 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 com.intellij.rt.execution.application.AppMain.main(AppMain.java:123)sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 1 more

import lombok.extern.slf4j.Slf4j; 

    @Slf4j 
    public class CheckLog { 

     public static void main(String... args){ 
      log.info("I'm Here!! "); 
     } 
    } 

Unten ist meine build.gradle Datei mit lombok zusammen mit den zugehörigen slf4j Abhängigkeiten definiert.

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

UPDATE: Nach dem Wechsel zu „übersetzen“, läuft dies auf der Kommandozeile von IntelliJ nicht, wie es seine eigene Laufzeit zu verwenden, scheint es zu interpretieren, während gradle die verwendet man I definiert haben. jdk1.8.0_121

Antwort

1

Das Problem ist, dass Sie nicht die SL4J JAR-Dateien zur Laufzeit hinzugefügt haben, weil Sie es für Kompilierung nur verwendet. Ändern Ihre build.gradle-Datei für die SLF4J Abhängigkeiten compile statt compileOnly:

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

Danke! Ich kann es auf der Kommandozeile ausführen, damit es jetzt funktioniert. Aber wenn ich es mit Intellij starte, gibt es immer noch die gleiche Fehlermeldung, und weil ich in Intellij eine Datenbank-App für End-to-End-Tests habe, brauche ich sie auch dort. – Sammy65

+0

Versuchen Sie, das Projekt in IntelliJ erneut zu importieren. – Boschi

+0

es schlägt immer noch fehl :-( – Sammy65

1

Wechsel: compileOnly 'org.slf4j:slf4j-api:1.7.24'-compile 'org.slf4j:slf4j-api:1.7.24'

+0

Vielen Dank! Ich kann es auf der Kommandozeile ausführen, damit es jetzt funktioniert. Aber wenn ich es mit Intellij starte, gibt es immer noch die gleiche Fehlermeldung, und weil ich in Intellij eine Datenbank-App für End-to-End-Tests habe, brauche ich sie auch dort. – Sammy65

+0

@ Sammy65 sollte es auch in Intellij funktionieren. Können Sie Ihr Projekt aktualisieren? – Jens

+0

Ich habe das Projekt mehrmals aktualisiert aber immer noch keine Freude – Sammy65

2

Ich habe ein Problem. IntelliJ Idea 2016,3 und Gradle 3.4.1

ein neues Projekt mit Initialized:

gradle init --type java-application

hinzugefügt paar Zeilen

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

hinzugefügt Linie App.java build.gradle:

... static Logger logger = LoggerFactory.getLogger(App.class); ...

Und jetzt haben Sie Fehler in Idee, aber in Terminal-Projekt werden in Ordnung laufen (mit gradle Laufe)

Error in IntelliJ Idea

Update: Ich fand, dass, wenn ich ein Projekt mit einer gradle 3.3 Initialisierung (nicht 3.4.1) dann Fehler verlassen. Vielleicht hängt dieses Verhalten mit diesem Problem zusammen: https://youtrack.jetbrains.com/issue/IDEA-167412

Verwandte Themen