2017-06-12 4 views
0

La documentation SLF4J indique que dans le cas d'une erreur NoClassDefFoundError, le fichier jar slf4j-api-1.7.25 doit être ajouté au chemin de classe. J'ai ajouté ce fichier à mon classpath, mais je reçois toujours cette erreur:NoClassDefFoundError lors de l'utilisation de Simple Logging Facade pour Java, même avec slf4j-api.jar

Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFac 
     at SchemaDetailsTest.<clinit>(SchemaDetailsTest.java:9) 
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory 
     at java.net.URLClassLoader.findClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     ... 1 more 

Voici mon classpath:

java -cp "C:\Users\Tiffany\Desktop\baffle-sql-parser-master\library\src\demos\analyzescript\slf4j-1.7.25.jar;C:\Users\Tiffany\Desktop\baffle-sql-parser-master\library\src\demos\analyzescript\slf4j-1.7.25\slf4j-api-1.7.25-sources.jar;C:\Users\Tiffany\Desktop\baffle-sql-parser-master\library\src\demos\analyzescript\slf4j-1.7.25\slf4j-simple-1.7.25.jar;C:\Users\Tiffany\Desktop\baffle-sql-parser-master\library\src\demos\analyzescript\mysql-connector-java-5.1.42-bin.jar;C:\Users\Tiffany\Desktop\baffle-sql-parser-master\library\src\demos\analyzescript" SchemaDetailsTest 

Et voici une partie du code:

private static Logger log = LoggerFactory 
      .getLogger(SchemaDetailsTest.class); 
    public static void main(String args[]) throws Exception { 
     String databaseName = "myDbName"; 
     String JDBC_DRIVER = "jdbc:mysql://34.210.136.158:3306/"; 
     String USER = "servicenowapp"; 
     String PWD = "test"; 
     // Setup the connection with the DB 
     Class.forName("com.mysql.jdbc.Driver"); 
     Connection conn = null; 
     try { 
      conn = DriverManager.getConnection(JDBC_DRIVER, USER, PWD); 
     }catch(Exception e){ 
      e.printStackTrace(); 
     } 

Tout avis sera le bienvenu!

Répondre

1

slf4j-api-1.7.25-sources.jar est la source Java, vous voulez le fichier binaire. Changer à slf4j-api-1.7.25.jar

Vous pouvez également simplifier votre classpath un peu (et si vous configurez comme une variable d'environnement, vous trouverez qu'il est plus facile de maintenir)

set "SLF4J_VER=1.7.25" 
set "MYSQL_VER=5.1.42" 
set "DESKTOP=C:\Users\Tiffany\Desktop" 
set "SCRIPT_LIB=%DESKTOP\baffle-sql-parser-master\library\src\demos\analyzescript" 
set "SLF4J_LIB=%SCRIPT_LIB%\slf4j-%SLF4J_VER%" 
set "CLASSPATH=%SLF4J_LIB%\slf4j-api-%SLF4J_VER%.jar;%SLF4J_LIB%\slf4j-simple-%SLF4J_VER%.jar;%SCRIPT_LIB%\mysql-connector-java-%MYSQL_VER%-bin.jar;%SCRIPT_LIB%" 
java SchemaDetailsTest 
+1

ou mieux encore, utilisez Maven ou Gradle. – chrylis

+0

@chrylis Ou apache-lierre ou sbt. –

0

L'erreur est que vous ajoutez une mauvaise la source pot slf4j-api-1.7.25-sources.jar, vous devez ajouter le bin pot quelque chose comme slf4j-api-1.7.25.jar