2016-09-23 1 views
2

Springでslf4jを構成する際に問題が発生しました。私は、Mavenを使用している、と私は.jarファイルをパッケージ化することができますが、私はそれを実行すると、それは次の例外を与える:slf4のSpringでのNoClassDefFoundError

Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory 
     at logger.Log.<clinit>(Log.java:8) 
     at app.App.main(App.java:29) 
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) 
     ... 2 more 

は、ここで私はSLF4Jを使用している方法は次のとおりです。

public class Log implements ILog { 

    private static final Logger LOGGER = LoggerFactory.getLogger(Log.class); 

    @Override 
    public void reportMessage(String message) { 
     LOGGER.info(message); 
    } 

    @Override 
    public void reportWarningMessage(String message) { 
     LOGGER.warn(message); 
    } 

    @Override 
    public void reportErrorMessage(String message) { 
     LOGGER.error(message); 
    } 
} 

そして、ここですpom.xmlファイル:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>pt.isel.ps</groupId> 
    <artifactId>neat</artifactId> 
    <version>1.0-SNAPSHOT</version> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.3.5.RELEASE</version> 
    </parent> 

    <dependencies> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>1.7.19</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-jdk14</artifactId> 
      <version>1.7.19</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-logging</groupId> 
      <artifactId>commons-logging</artifactId> 
      <version>1.2</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
      <exclusions> 
       <exclusion> 
        <groupId>org.springframework.boot</groupId> 
        <artifactId>spring-boot-starter-logging</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
    </dependencies> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.5.1</version> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
       <version>1.3.0.RELEASE</version> 
       <configuration> 
        <mainClass>app.App</mainClass> 
        <layout>ZIP</layout> 
       </configuration> 
       <executions> 
        <execution> 
         <goals> 
          <goal>repackage</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

誰かが私を助けることができたら、私は非常に感謝します。

+1

[java.lang.NoClassDefFoundErrorの可能な複製:org.slf4j.LoggerFactory](http://stackoverflow.com/questions/12926899/java-lang-noclassdeffounderror-org-slf4j-loggerfactory) –

+0

私は何を試したあなたが紹介したが、まだそのエラーを取得しているという答えに示唆された... – gqmartins

答えて

0

明らかに、クラスパスの下にorg.slf4j.LoggerFactoryクラスが見つかりません。

  1. コマンドラインから、プロジェクトフォルダから、再度、依存関係を引っ張るようにしてください:dependency:copy-dependencies
  2. は、プロジェクトをリフレッシュすることにより、および/またはアップデートの依存性により、M2eをEclipseのプラグインで、あなたのEclipse IDEを同期するようにしてください。 (あなたが見つけることができるはずです)、あなたのプロジェクトにMavenの依存関係の下でunfoundクラスを探して、それがうまくいかない場合mvn clean compile
  3. を:プロジェクトフォルダからコマンドライン&オン
  4. は、使用して再コンパイルしてみてください。
  5. Mavenの依存関係がビルド構成の一部であることを確認してください。
  6. 再コンパイルしてください:mvn clean compile

あなたはローカルのMavenリポジトリに要求された依存関係を持っている、そしてそれはあなたのプロジェクトに含まれており、あなたのビルド構成があなたの出力クラスパスフォルダに含まれるMavenの依存関係が含まれていた場合。そうすればうまくいくはずです。

関連する問題