2012-05-01 2 views
1

jasper 종속성을 봄 프로젝트에 추가하려고하지만 아래에이 오류가 발생합니다.
이미 재스퍼와 log4j의 다른 버전을 사용해 보았지만 작동하지 않습니다.
나는 최신 버전을 사용합니다. 스프링과 오라클 웹 로직 11g.
이것은 jasper 의존성을 추가 할 때만 발생합니다.
누구나 같은 문제가 있었습니까? 내가 pom.xml 파일에서 종속성 계층 구조를 확인하고 내가 뭔가 이상한 발견 Spring - Maven | 재스퍼 의존성


<?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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.company</groupId> 
    <artifactId>myproject</artifactId> 
    <name>myProject</name> 
    <packaging>war</packaging> 
    <version>1.0.0-BUILD-SNAPSHOT</version> 
    <properties> 
    <java-version>1.6</java-version> 
    <org.springframework-version>3.1.0.RELEASE</org.springframework-version> 
    <org.aspectj-version>1.6.9</org.aspectj-version> 
    <org.slf4j-version>1.6.1</org.slf4j-version> 
    <jackson.version>1.9.3</jackson.version> 
    <validation-api-version>1.0.0.GA</validation-api-version> 
    <hibernate-validator-version>4.2.0.Final</hibernate-validator-version> 
    <jasper.version>4.5.0</jasper.version> 
    <commons.digester.version>2.1</commons.digester.version> 
    <commons.collections.version>3.2.1</commons.collections.version> 
    </properties> 
    <dependencies> 

    <!-- Spring --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>${org.springframework-version}</version> 
     <exclusions> 
     <!-- Exclude Commons Logging in favor of SLF4j --> 
     <exclusion> 
      <groupId>commons-logging</groupId> 
      <artifactId>commons-logging</artifactId> 
     </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>${org.springframework-version}</version> 
    </dependency> 

    <!-- mysql --> 
    <dependency> 
     <groupId>com.mysql</groupId> 
     <artifactId>mysqljdbc6</artifactId> 
     <version>3.1.10</version> 
    </dependency> 

    <!-- Spring Data JPA --> 
    <dependency> 
     <groupId>org.springframework.data</groupId> 
     <artifactId>spring-data-jpa</artifactId> 
     <version>1.0.3.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-jdbc</artifactId> 
     <version>${org.springframework-version}</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 

    <!-- validation --> 
    <dependency> 
     <groupId>javax.validation</groupId> 
     <artifactId>validation-api</artifactId> 
     <version>${validation-api-version}</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator</artifactId> 
     <version>${hibernate-validator-version}</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 

    <!-- Data Mapper package is a high-performance data binding package built on Jackson JSON processor --> 
    <dependency> 
     <groupId>org.codehaus.jackson</groupId> 
     <artifactId>jackson-mapper-asl</artifactId> 
     <version>${jackson.version}</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 

    <!-- Jackson is a high-performance JSON processor (parser, generator) --> 
    <dependency> 
     <groupId>org.codehaus.jackson</groupId> 
     <artifactId>jackson-core-asl</artifactId> 
     <version>${jackson.version}</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 
    <!-- AspectJ --> 
    <dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjrt</artifactId> 
     <version>${org.aspectj-version}</version> 
    </dependency> 
    <!-- Logging --> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>${org.slf4j-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>net.sf.jasperreports</groupId> 
     <artifactId>jasperreports</artifactId> 
     <version>4.1.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>jcl-over-slf4j</artifactId> 
     <version>${org.slf4j-version}</version> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>${org.slf4j-version}</version> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.16</version> 
     <exclusions> 
     <exclusion> 
      <groupId>javax.mail</groupId> 
      <artifactId>mail</artifactId> 
     </exclusion> 
     <exclusion> 
      <groupId>javax.jms</groupId> 
      <artifactId>jms</artifactId> 
     </exclusion> 
     <exclusion> 
      <groupId>com.sun.jdmk</groupId> 
      <artifactId>jmxtools</artifactId> 
     </exclusion> 
     <exclusion> 
      <groupId>com.sun.jmx</groupId> 
      <artifactId>jmxri</artifactId> 
     </exclusion> 
     </exclusions> 
     <scope>runtime</scope> 
    </dependency> 

    <!-- @Inject --> 
    <dependency> 
     <groupId>javax.inject</groupId> 
     <artifactId>javax.inject</artifactId> 
     <version>1</version> 
    </dependency> 
    <!-- Servlet --> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>2.5</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet.jsp</groupId> 
     <artifactId>jsp-api</artifactId> 
     <version>2.1</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
    </dependency> 
    <!-- Test --> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.7</version> 
     <scope>test</scope> 
    </dependency> 
    <!-- Tiles --> 
    <dependency> 
     <groupId>org.apache.tiles</groupId> 
     <artifactId>tiles-extras</artifactId> 
     <version>2.2.2</version> 
     <exclusions> 
     <exclusion> 
      <artifactId>tiles-freemarker</artifactId> 
      <groupId>org.apache.tiles</groupId> 
     </exclusion> 
     <exclusion> 
      <artifactId>tiles-velocity</artifactId> 
      <groupId>org.apache.tiles</groupId> 
     </exclusion> 
     <exclusion> 
      <artifactId>tiles-ognl</artifactId> 
      <groupId>org.apache.tiles</groupId> 
     </exclusion> 
     <exclusion> 
      <artifactId>tiles-mvel</artifactId> 
      <groupId>org.apache.tiles</groupId> 
     </exclusion> 
     </exclusions> 
    </dependency> 
    </dependencies> 
    <build> 
    <plugins> 
     <plugin> 
     <artifactId>maven-eclipse-plugin</artifactId> 
     <version>2.9</version> 
     <configuration> 
      <additionalProjectnatures> 
      <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature> 
      </additionalProjectnatures> 
      <additionalBuildcommands> 
      <buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand> 
      </additionalBuildcommands> 
      <downloadSources>true</downloadSources> 
      <downloadJavadocs>true</downloadJavadocs> 
     </configuration> 
     </plugin> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>2.3.2</version> 
     <configuration> 
      <source>1.6</source> 
      <target>1.6</target> 
      <compilerArgument>-Xlint:all</compilerArgument> 
      <showWarnings>true</showWarnings> 
      <showDeprecation>true</showDeprecation> 
     </configuration> 
     </plugin> 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>exec-maven-plugin</artifactId> 
     <version>1.2.1</version> 
     <configuration> 
      <mainClass>org.test.int1.Main</mainClass> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
</project> 
, 나는이 문제가 될 수 아래에 놓을 게요 :
<1/Mai/2012 16H10m BST> <Warning> <HTTP> <BEA-101162> <User defined listener org.springframework.web.context.ContextLoaderListener failed: java.lang.ExceptionInInitializerError. 
java.lang.ExceptionInInitializerError 
    at org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:73) 
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:242) 
    at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:156) 
    at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:132) 
    at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:272) 
    Truncated. see log file for complete stacktrace 
Caused By: java.lang.ClassCastException: weblogic.xml.jaxp.RegistryDocumentBuilderFactory cannot be cast to javax.xml.parsers.DocumentBuilderFactory 
    at javax.xml.parsers.DocumentBuilderFactory.newInstance(Unknown Source) 
    at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:849) 
    at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:773) 
    at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:483) 
    at org.apache.log4j.LogManager.<clinit>(LogManager.java:127) 
    Truncated. see log file for complete stacktrace 
> 


<1/Mai/2012 16H10m BST> <Warning> <HTTP> <BEA-101162> <User defined listener org.springframework.web.context.ContextLoaderListener failed: java.lang.NoClassDefFoundError: Could not initialize class org.apache.log4j.LogManager. 
java.lang.NoClassDefFoundError: Could not initialize class org.apache.log4j.LogManager 
    at org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:73) 
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:242) 
    at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:156) 
    at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:132) 
    at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:272) 
    Truncated. see log file for complete stacktrace 
> 

내 pom.xml 파일입니다 ? 그러나 재 스퍼의 종속성을 추가 할 때마다 발생하기 때문에 이상합니다. 나는 다른 것들을 발전 시켰고 결코 갈등을 겪지 않았다.

http://imageshack.us/photo/my-images/151/capturar1b.jpg/
http://imageshack.us/photo/my-images/696/capturar2f.jpg/

답변

0

SECOND 답


첫 번째 오류는 호환되지 않는 XML 파서 구현이 익숙해 있음을 나타냅니다. 대부분의 Weblogic은 자체적 인 구현을 제공하며, 이는 의존성 중 하나에 의해 가져 오는 XML 파서 구현과 충돌합니다. XML 파서를 가져 오는 것을 파악한 다음 해당 파서를 제외해야합니다. 많은 IDE (m2eclipse를 사용하는 Eclipse와 같이)는 POM의 시각적 그래프를 제공하여 종속성을 파악하는 데 도움을줍니다. 또는 'mvn dependency:tree'을 사용할 수 있다고 생각합니다.

은 이 클래스 경로에 없음을 나타 내기 위해으로 보입니다. 당신이 전쟁 (또는 폭발 된 전쟁)을 올바르게 만들고 있다고 가정하고 생성 된 의존성 jars가 모두/WEB-INF/lib 폴더에 있다면, log4j 구현이 두 개 있다는 점을 가장 잘 추측 할 수 있습니다. . 아마도 weblogic에는 log4j 구현이 포함되어 있으므로 기본적으로 webapps에서 사용할 수 있습니다.이를 테스트하려면 log4j 종속성 범위를 "제공됨"으로 설정해보십시오. log4j에 계속 문제가 있다면 slf4j의 자체 로깅 구현 (logback)을 대신 사용해보십시오. 즉

<dependency> 
    <groupId>ch.qos.logback</groupId> 
    <artifactId>logback-classic</artifactId> 
    <scope>runtime</scope> 
    <version>1.0.0</version> 
    </dependency> 

첫 번째 대답 (아마도 유용하지만 해결되지 않는 주요 문제가있을 수 있습니다.) 재스퍼에서 평민 로깅 제외


보십시오.

또한 Jackson을 직접 사용하고있는 것으로 나타났습니다. 재스퍼는 또한 잭슨에 의존하고있다. 제 경우에는 Jasper에서 Jackson을 제외해야합니다. 그래서 훨씬 새로운 버전을 참조 할 수있었습니다.

<dependency> 
    <groupId>net.sf.jasperreports</groupId> 
    <artifactId>jasperreports</artifactId> 
    <version>4.5.0</version> 
    <exclusions> 
     <exclusion> 
     <groupId>commons-logging</groupId> 
     <artifactId>commons-logging</artifactId> 
     </exclusion> 
     <exclusion> 
     <artifactId>jackson-mapper-lgpl</artifactId> 
     <groupId>org.codehaus.jackson</groupId> 
     </exclusion> 
     <exclusion> 
     <artifactId>jackson-core-lgpl</artifactId> 
     <groupId>org.codehaus.jackson</groupId> 
     </exclusion>   
    </exclusions> 
    </dependency> 

다른 종속성에서 commons-logging을 올바르게 제거했는지 확인합니다. 최종 이행 적 종속성을 확인하면 commons-logging.jar이 표시되지 않아야합니다.

+0

내가 당신 sugestion을 시도했지만 작동하지 않습니다 (또한, 나는 이전에 읽기가 매우 어려웠습니다. 아직 그 읽기 쉬운,하지만 더 나은. 당신의 XML의 약간. 개선 된 서식을 시도했다). 내가 commons-logging에서 log4j를 제외하고 무엇을 의미합니까? 죄송 합니다만 저는 막상과 봄으로 시작하고 있습니다 – John

+0

내 실수. 원래는 당신이 어떻게하면 log4j를 commons-logging에서 제외하려고 생각 했었지만 지금은 그렇지 않다는 것을 알았습니다. 나는 두 가지 오류 메시지에 대한 아이디어를 더 구체적으로 제공하기 위해 내 답변을 편집했습니다. – kaliatech