2015-02-04 27 views
1

Glassfish 4.1 서버에 WAR 파일을 배포하려고합니다. 배포에서 시도하는 동안 java.lang.NoSuchMethodError : org.apache.logging.log4j.core.lookup.MapLookup.toMap

, 나는 다음과 같은 예외가 나타납니다

java.lang.Exception: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.NoSuchMethodError: org.apache.logging.log4j.core.lookup.MapLookup.toMap(Ljava/util/List;)Ljava/util/Map;

는 자바 독에 상대를, 난 정말 어떤 toMap 방법을 볼 수없는 이유는 무엇입니까? ( https://logging.apache.org/log4j/2.0/log4j-core/apidocs/org/apache/logging/log4j/core/lookup/MapLookup.html) 전쟁 파일에

항아리 TVF :

WEB-INF/lib/log4j-core-2.1.jar 
WEB-INF/lib/javax.inject-2.4.0-b06.jar 
WEB-INF/lib/postgresql-9.3-1102-jdbc41.jar 
WEB-INF/lib/javax.annotation-api-1.2.jar 
WEB-INF/lib/javassist-3.18.1-GA.jar 
WEB-INF/lib/jersey-common-2.15.jar 
WEB-INF/lib/hk2-api-2.4.0-b06.jar 
WEB-INF/lib/validation-api-1.1.0.Final.jar 
WEB-INF/lib/jersey-container-servlet-core-2.15.jar 
WEB-INF/lib/hk2-locator-2.4.0-b06.jar 
WEB-INF/lib/log4j-web-2.0.2.jar 
WEB-INF/lib/log4j-core-2.0.2.jar 
WEB-INF/lib/jersey-client-2.15.jar 
WEB-INF/lib/hk2-utils-2.4.0-b06.jar 
WEB-INF/lib/javax.ws.rs-api-2.0.1.jar 
WEB-INF/lib/aopalliance-repackaged-2.4.0-b06.jar 
WEB-INF/lib/commons-lang3-3.3.2.jar 
WEB-INF/lib/osgi-resource-locator-1.0.1.jar 
WEB-INF/lib/log4j-api-2.1.jar 
WEB-INF/lib/log4j-api-2.0.2.jar 
WEB-INF/lib/jersey-guava-2.15.jar 
WEB-INF/lib/jersey-server-2.15.jar 
WEB-INF/lib/log4j-web-2.1.jar 
WEB-INF/lib/commons-codec-1.10.jar 

내 pom.xml 파일 :

<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/maven-v4_0_0.xsd"> 

<modelVersion>4.0.0</modelVersion> 

<groupId>WebTool</groupId> 
<artifactId>WebTool</artifactId> 
<packaging>war</packaging> 
<version>1.0-SNAPSHOT</version> 
<name>WebTool</name> 

<build> 
    <finalName>WebTool</finalName> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.5.1</version> 
      <inherited>true</inherited> 
      <configuration> 
       <source>1.7</source> 
       <target>1.7</target> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>org.glassfish.jersey</groupId> 
      <artifactId>jersey-bom</artifactId> 
      <version>${jersey.version}</version> 
      <type>pom</type> 
      <scope>import</scope> 
     </dependency> 
     <!-- my --> 
     <dependency> 
      <groupId>org.postgresql</groupId> 
      <artifactId>postgresql</artifactId> 
      <version>${postgresql.version}</version> 
     </dependency> 
     <!-- 
     <dependency> 
      <groupId>org.apache.logging.log4j</groupId> 
      <artifactId>log4j-api</artifactId> 
      <version>${log4j.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.logging.log4j</groupId> 
      <artifactId>log4j-core</artifactId> 
      <version>${log4j.version}</version> 
     </dependency> 
     --> 
     <dependency> 
      <groupId>org.apache.logging.log4j</groupId> 
      <artifactId>log4j-bom</artifactId> 
      <version>${log4j.version}</version> 
      <scope>import</scope> 
      <type>pom</type> 
     </dependency> 
     <!-- <dependency> 
      <groupId>org.apache.logging.log4j</groupId> 
      <artifactId>log4j-web</artifactId> 
      <version>${log4j.version}</version> 
     </dependency>--> 
     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-lang3</artifactId> 
      <version>${commonslang.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-codec</groupId> 
      <artifactId>commons-codec</artifactId> 
      <version>${commonscodec.version}</version> 
     </dependency> 
     <!-- end my --> 
    </dependencies> 
</dependencyManagement> 

<dependencies> 
    <dependency> 
     <groupId>org.glassfish.jersey.containers</groupId> 
     <artifactId>jersey-container-servlet-core</artifactId> 
     <!-- use the following artifactId if you don't need servlet 2.x compatibility --> 
     <!-- artifactId>jersey-container-servlet</artifactId --> 
    </dependency> 
    <!-- uncomment this to get JSON support 
    <dependency> 
     <groupId>org.glassfish.jersey.media</groupId> 
     <artifactId>jersey-media-moxy</artifactId> 
    </dependency> 
    --> 



    <dependency> 
     <groupId>org.postgresql</groupId> 
     <artifactId>postgresql</artifactId> 
     <!-- <version>${postgresql.version}</version> --> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-api</artifactId> 
     <!-- <version>${log4j.version}</version> --> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-core</artifactId> 
     <!-- <version>${log4j.version}</version> --> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-web</artifactId> 
     <!-- <version>${log4j.version}</version> --> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-lang3</artifactId> 
     <!-- <version>${commonslang.version}</version> --> 
    </dependency> 
    <dependency> 
    <groupId>commons-codec</groupId> 
    <artifactId>commons-codec</artifactId> 
     <!-- <version>${commonscodec.version}</version> --> 
    </dependency> 

    <!-- configure connection pool in glassfish admin ! JDBC Connection Pool and JCBC Resource --> 
</dependencies> 
<!-- 
    DEPENDENCY MANAGEMENT 
    --> 

<properties> 
    <postgresql.version>9.3-1102-jdbc41</postgresql.version> 
    <jersey.version>2.15</jersey.version> 
    <log4j.version>2.1</log4j.version> 
    <dbcp2.version>2.0.1</dbcp2.version> 
    <commonslang.version>3.3.2</commonslang.version> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <commonscodec.version>1.10</commonscodec.version> 
</properties> 

종속성 트리 :

[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ WebTool --- 
[INFO] WebTool:WebTool:war:1.0-SNAPSHOT 
[INFO] +- org.glassfish.jersey.containers:jersey-container-servlet-core:jar:2.15:compile 
[INFO] | +- org.glassfish.hk2.external:javax.inject:jar:2.4.0-b06:compile 
[INFO] | +- org.glassfish.jersey.core:jersey-common:jar:2.15:compile 
[INFO] | | +- (javax.ws.rs:javax.ws.rs-api:jar:2.0.1:compile - omitted for duplicate) 
[INFO] | | +- javax.annotation:javax.annotation-api:jar:1.2:compile 
[INFO] | | +- org.glassfish.jersey.bundles.repackaged:jersey-guava:jar:2.15:compile 
[INFO] | | +- org.glassfish.hk2:hk2-api:jar:2.4.0-b06:compile 
[INFO] | | | +- org.glassfish.hk2:hk2-utils:jar:2.4.0-b06:compile 
[INFO] | | | \- org.glassfish.hk2.external:aopalliance-repackaged:jar:2.4.0-b06:compile 
[INFO] | | +- (org.glassfish.hk2.external:javax.inject:jar:2.4.0-b06:compile - omitted for duplicate) 
[INFO] | | +- org.glassfish.hk2:hk2-locator:jar:2.4.0-b06:compile 
[INFO] | | | +- (org.glassfish.hk2.external:javax.inject:jar:2.4.0-b06:compile - omitted for duplicate) 
[INFO] | | | +- (org.glassfish.hk2.external:aopalliance-repackaged:jar:2.4.0-b06:compile - omitted for duplicate) 
[INFO] | | | +- (org.glassfish.hk2:hk2-api:jar:2.4.0-b06:compile - omitted for duplicate) 
[INFO] | | | +- (org.glassfish.hk2:hk2-utils:jar:2.4.0-b06:compile - omitted for duplicate) 
[INFO] | | | \- org.javassist:javassist:jar:3.18.1-GA:compile 
[INFO] | | \- org.glassfish.hk2:osgi-resource-locator:jar:1.0.1:compile 
[INFO] | +- org.glassfish.jersey.core:jersey-server:jar:2.15:compile 
[INFO] | | +- (org.glassfish.jersey.core:jersey-common:jar:2.15:compile - omitted for duplicate) 
[INFO] | | +- org.glassfish.jersey.core:jersey-client:jar:2.15:compile 
[INFO] | | | +- (org.glassfish.jersey.core:jersey-common:jar:2.15:compile - omitted for duplicate) 
[INFO] | | | +- (javax.ws.rs:javax.ws.rs-api:jar:2.0.1:compile - omitted for duplicate) 
[INFO] | | | +- (org.glassfish.hk2:hk2-api:jar:2.4.0-b06:compile - omitted for duplicate) 
[INFO] | | | +- (org.glassfish.hk2.external:javax.inject:jar:2.4.0-b06:compile - omitted for duplicate) 
[INFO] | | | \- (org.glassfish.hk2:hk2-locator:jar:2.4.0-b06:compile - omitted for duplicate) 
[INFO] | | +- (javax.ws.rs:javax.ws.rs-api:jar:2.0.1:compile - omitted for duplicate) 
[INFO] | | +- (javax.annotation:javax.annotation-api:jar:1.2:compile - omitted for duplicate) 
[INFO] | | +- (org.glassfish.hk2:hk2-api:jar:2.4.0-b06:compile - omitted for duplicate) 
[INFO] | | +- (org.glassfish.hk2.external:javax.inject:jar:2.4.0-b06:compile - omitted for duplicate) 
[INFO] | | +- (org.glassfish.hk2:hk2-locator:jar:2.4.0-b06:compile - omitted for duplicate) 
[INFO] | | \- javax.validation:validation-api:jar:1.1.0.Final:compile 
[INFO] | \- javax.ws.rs:javax.ws.rs-api:jar:2.0.1:compile 
[INFO] +- org.postgresql:postgresql:jar:9.3-1102-jdbc41:compile 
[INFO] +- org.apache.logging.log4j:log4j-api:jar:2.1:compile 
[INFO] +- org.apache.logging.log4j:log4j-core:jar:2.1:compile 
[INFO] | \- (org.apache.logging.log4j:log4j-api:jar:2.1:compile - omitted for duplicate) 
[INFO] +- org.apache.logging.log4j:log4j-web:jar:2.1:compile 
[INFO] | +- (org.apache.logging.log4j:log4j-api:jar:2.1:compile - omitted for duplicate) 
[INFO] | \- (org.apache.logging.log4j:log4j-core:jar:2.1:compile - omitted for duplicate) 
[INFO] +- org.apache.commons:commons-lang3:jar:3.3.2:compile 
[INFO] \- commons-codec:commons-codec:jar:1.10:compile 
+0

배포 버전에 여러 버전의 log4j 버전 2가 있습니다. 하나만 사용하십시오. –

+0

하지만 어떻게? 보시다시피, 내 pom.xml 한 번만 정의합니다. 나는 의존성의 모든 부분을 관리가 충돌을 해결하는 것이라고 생각 했습니까? –

+0

"WEB-INF/lib/log4j-api-2.1.jar WEB-INF/lib/log4j-api-2.0.2.jar" –

답변

2

여러가 버전 log4j 버전 2를 WAR 파일에 넣었습니다. 지정한 파일과 가장 가능성이 높은 파일은 전이 종속성으로 간주됩니다. 일반적으로 최신 버전 만 선택해야하지만 재 포장 된 버전 일 수 있습니다.

따라서 원하지 않는 부분을 식별해야하므로 어디에서 처리해야할지 파악할 수 있습니다. 종속성 트리는

mvn dependency:tree 

으로 표시됩니다. 사용 정보는을 참조하십시오.

Eclipse를 m2e와 함께 사용하는 경우 pom.xml을 열 때 올바른 패널을 선택하십시오.

그렇다면 어디서 왔는지 알아 내면 어떻게해야할지 알아야합니다. 당신은 가장 최근에 가지고있는 것처럼 그것을 제외하고 싶을 것입니다 - 지침은 http://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html을보십시오. 나는 당신이 당신이하고있는 것을 이해할 수 있도록 당신이 그것을 신중하게 읽도록 제안 할 것입니다 - 이것은 당신이 더 잘 알고 있기 때문에 본질적으로 뇌를 씻는 Maven입니다.

+0

내 원본 게시물을 내 종속성 트리로 업데이트했습니다. 보시다시피 2.0.2가 없습니다. –

+1

"mvn clean"을 실행 한 적이 있습니까? –

+0

IntelliJ IDEA를 사용하므로 "캐시 무효화"및 "프로젝트 재 구축"과 같은 효과가 있습니다. –

관련 문제