2017-03-01 2 views
0

J'ai essayé de faire fonctionner cela pendant trois jours maintenant dans mon projet et j'ai créé un projet simple à tester. J'ai cherché autour de questions très similaires sur ici, mais je n'ai rien trouvé qui m'a aidé à résoudre l'erreur que je reçois. Je suis même allé jusqu'à reformater mon Fedora 25 car cela fonctionne sur Windows 10 mais toujours rien. J'ai également activé dans les deux paramètres et d'autres paramètres dans le traitement d'annotation Intellij-2016.3.4 qui, selon d'autres réponses aurait dû le corriger mais, il ne change rien. S'il vous plaît toute aide sera appréciée !!!Exception Gradle dans le fil "principal" 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!! "); 
     } 
    } 

Ci-dessous mon fichier build.gradle ayant défini lombok ainsi que les dépendances de SLF4J associées.

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

MISE À JOUR: Après avoir changé de « compiler », cela va sur la ligne de commande pas de Intellij car il semble utiliser son propre moteur d'exécution pour l'interpréter en gradle utilise celui que je l'ai défini. jdk1.8.0_121

Répondre

1

Le problème est que vous n'avez pas ajouté les fichiers JAR SL4J lors de l'exécution, parce que vous avez utilisé pour la compilation seule. Modifiez votre fichier build.gradle pour les dépendances de SLF4J à compile au lieu de compileOnly:

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

Merci! Je suis capable de l'exécuter sur la ligne de commande pour que cela fonctionne maintenant. Mais, quand je le lance avec Intellij, il envoie toujours le même message d'erreur et parce que j'ai une application de base de données dans Intellij pour exécuter des tests de bout en bout, j'en ai besoin pour travailler là aussi. – Sammy65

+0

Essayez de réimporter le projet dans IntelliJ. – Boschi

+0

il échoue toujours :-( – Sammy65

1

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

+0

Merci! Je suis capable de l'exécuter sur la ligne de commande pour que cela fonctionne maintenant. Mais, quand je le lance avec Intellij, il envoie toujours le même message d'erreur et parce que j'ai une application de base de données dans Intellij pour exécuter des tests de bout en bout, j'en ai besoin pour travailler là aussi. – Sammy65

+0

@ Sammy65 il devrait également fonctionner dans Intellij. pouvez-vous rafraîchir votre projet? – Jens

+0

J'ai rafraîchi le projet plusieurs fois mais toujours pas de joie – Sammy65

2

J'ai un problème. Idée IntelliJ 2016,3 et Gradle 3.4.1

un nouveau projet initialisé avec:

gradle init --type java-application

lignes couple ajouté à build.gradle

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

ligne ajoutée à App.java:

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

Et maintenant, vous avez une erreur dans l'idée, mais dans le projet de terminal courrez ok (avec piste gradle)

Error in IntelliJ Idea

Mise à jour: Je trouve que si je suis un projet d'initialisation avec un 3.3 (non gradle 3.4.1) puis erreur. Peut-être que ce problème lié à ce problème: https://youtrack.jetbrains.com/issue/IDEA-167412