2017-02-16 12 views
0

私は、次のエラーを取得しています:のLinkageError - ローダー制約違反 - メソッド解決時に "org.slf4j.impl.StaticLoggerBinder.getLoggerFactoryを()"

ContextListenerjava.lang.LinkageError: loader constraint violation: when resolving method "org.slf4j.impl.StaticLoggerBinder.getLoggerFactory()Lorg/slf4j/ILoggerFactory;" the class loader '[email protected] (urls: ['], parents: [)'[email protected]']) of the current class, org/slf4j/LoggerFactory, and the class loader 'System (urls: [''file:/usr/lib/jvm/jvm_8/jvm_8/lib/jvmx.jar', 'file:/usr/lib/jvm/jvm_8/jvm_8/lib/tools.jar', 'file:/ ....

これは、デフォルトのパッケージslf4jによって私のクラウドプラットフォームを思わ、私はpomファイルに依存関係としてslf4jを入れているため、このエラーが発生しています.2つの異なるクラスローダーがロードされています。slf4j

私が問題を解決したのは、pomの依存関係の範囲を変更することでした。

しかし、slf4jライブラリが見つからないため、ローカルのtomcatで実行できません。

私の戦争が私のクラウドプラットフォームと私のローカルのTomcatでうまく動作するように、この場合には何ができますか?

答えて

0

pom.xmlで異なるプロファイルを使用できます。 SAPクラウドプラットフォーム用

例:

<profiles> 
     <profile> 
      <id>local</id> 
      <properties> 
       <packaging.type>jar</packaging.type> 
      </properties> 
      <activation> 
       <activeByDefault>true</activeByDefault> 
      </activation> 
      <dependencies> 
       <dependency> 
        <groupId>com.h2database</groupId> 
        <artifactId>h2</artifactId> 
       </dependency> 
      </dependencies> 
     </profile> 
    <profile> 
     <id>scp</id> 
     <properties> 
      <packaging.type>war</packaging.type> 
     </properties> 
     <build> 
      <finalName>LoraConnector</finalName> 
     </build> 
     <activation> 
      <activeByDefault>false</activeByDefault> 
     </activation> 
     <dependencies> 
      <dependency> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-starter-logging</artifactId> 
       <scope>provided</scope> 
      </dependency> 
      <dependency> 
       <groupId>org.slf4j</groupId> 
       <artifactId>slf4j-api</artifactId> 
       <scope>provided</scope> 
      </dependency> 
      <dependency> 
       <groupId>org.slf4j</groupId> 
       <artifactId>jul-to-slf4j</artifactId> 
       <scope>provided</scope> 
      </dependency> 
      <dependency> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-starter-tomcat</artifactId> 
       <scope>provided</scope> 
      </dependency> 
      <dependency> 
       <groupId>com.h2database</groupId> 
       <artifactId>h2</artifactId> 
       <scope>test</scope> 
      </dependency> 
     </dependencies> 
    </profile> 
</profiles> 

あなたは、Eclipseの "実行構成"(または別のツール)を使用してプロファイルを使用するか、warファイル構築しているとき:

mvn -P scp clean package 
0

spring-boot-starter-web-1.5.1.RELEASE.jarを使用している場合は、jul-to-slf4j-1.7.22.jar、jcl-over-slf4j-1.7.22.jarを除外する必要があります。これら2つのjarファイルにはslf4j-apiの競合があります。 <plugin> <artifactId>maven-war-plugin</artifactId> <version>2.6</version> <configuration> <packagingExcludes> WEB-INF/lib/jcl-over-slf4j-1.7.22.jar,WEB-INF/lib/jul-to-slf4j-1.7.22.jar </packagingExcludes> </configuration> </plugin>

関連する問題