2017-01-16 2 views
1

У меня возникла проблема с развертыванием приложения Spring MVC с использованием Spring Data JPA в Wildfly 8.2.1 и Glassfish 4.1 (Он работает в Wildfly 10, но мне не разрешено использовать его).Jackson error com.fasterxml.jackson.databind.ser.ContainerSerializer: метод <init> (Lcom/quickxml/jackson/databind/JavaType;) V не найден

Вот StackTrace

Stack Trace 
org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.ser.ContainerSerializer: method <init>(Lcom/fasterxml/jackson/databind/JavaType;)V not found 
org.springframework.web.servlet.DispatcherServlet.triggerAfterCompletionWithError(DispatcherServlet.java:1303) 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:977) 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) 
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:687) 
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:790) 
io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:86) 
io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) 
io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) 
org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78) 
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131) 
io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) 
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) 
io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) 
io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58) 
io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:70) 
io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76) 
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61) 
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:261) 
io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:248) 
io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:77) 
io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:167) 
io.undertow.server.Connectors.executeRootHandler(Connectors.java:199) 
io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:761) 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
java.lang.Thread.run(Thread.java:745) 

Мой POM:

<dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.1.0</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
    </dependency> 
    <!-- https://mvnrepository.com/artifact/javax.mail/mail --> 
    <dependency> 
     <groupId>javax.mail</groupId> 
     <artifactId>mail</artifactId> 
     <version>1.4</version> 
    </dependency> 

    <!-- https://mvnrepository.com/artifact/org.springframework/spring-context-support --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context-support</artifactId> 
     <version>4.3.3.RELEASE</version> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator</artifactId> 
     <version>4.3.2.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.validation</groupId> 
     <artifactId>validation-api</artifactId> 
     <version>1.0.0.GA</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
     <version>4.2.1.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>4.2.1.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-tx</artifactId> 
     <version>4.2.1.RELEASE</version> 
    </dependency> 
        <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-aop</artifactId> 
     <version>4.2.9.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-fileupload</groupId> 
     <artifactId>commons-fileupload</artifactId> 
     <version>1.2.2</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-io</groupId> 
     <artifactId>commons-io</artifactId> 
     <version>2.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-web</artifactId> 
     <version>4.2.1.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-dbcp</groupId> 
     <artifactId>commons-dbcp</artifactId> 
     <version>1.4</version> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-core</artifactId> 
     <version>2.8.3</version> 
    </dependency> 

    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-databind</artifactId> 
     <version>2.8.3</version> 
    </dependency> 

    <dependency> 
     <groupId>com.fasterxml.jackson.datatype</groupId> 
     <artifactId>jackson-datatype-hibernate4</artifactId> 
     <version>2.8.3</version> 
    </dependency> 
    <dependency> 
     <groupId>com.google.code.gson</groupId> 
     <artifactId>gson</artifactId> 
     <version>2.3</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>4.3.11.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>4.3.11.Final</version> 
    </dependency> 
    <!-- ... other dependency elements ... --> 


    <!-- Chat --> 
    <dependency> 
     <groupId>org.cometd.java</groupId> 
     <artifactId>bayeux-api</artifactId> 
     <version>2.5.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.cometd.java</groupId> 
     <artifactId>cometd-java-server</artifactId> 
     <version>2.5.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.cometd.java</groupId> 
     <artifactId>cometd-websocket-jetty</artifactId> 
     <version>2.5.0</version> 
     <exclusions> 
      <exclusion> 
       <groupId>org.cometd.java</groupId> 
       <artifactId>cometd-java-client</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-simple</artifactId> 
     <version>1.6.6</version> 
    </dependency> 
    <dependency> 
     <groupId>org.cometd.java</groupId> 
     <artifactId>cometd-java-annotations</artifactId> 
     <version>2.5.0</version> 
    </dependency> 
    <dependency> 
    <groupId>org.springframework.data</groupId> 
    <artifactId>spring-data-mongodb</artifactId> 
    <version>1.9.5.RELEASE</version> 
</dependency> 
<!-- Log4j --> 
<dependency> 
    <groupId>log4j</groupId> 
    <artifactId>log4j</artifactId> 
    <version>1.2.17</version> 
</dependency> 
      <dependency> 
     <groupId>org.postgresql</groupId> 
     <artifactId>postgresql</artifactId> 
     <version>9.4.1212.jre7</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.tomcat</groupId> 
     <artifactId>tomcat-dbcp</artifactId> 
     <version>7.0.55</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.transaction</groupId> 
     <artifactId>jta</artifactId> 
     <version>1.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.data</groupId> 
     <artifactId>spring-data-jpa</artifactId> 
     <version>1.10.6.RELEASE</version> 
     <type>jar</type> 
    </dependency> 
    <dependency> 
     <groupId>javax</groupId> 
     <artifactId>javaee-web-api</artifactId> 
     <version>7.0</version> 
     <type>jar</type> 
    </dependency> 
</dependencies> 
<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.6.0</version> 
      <configuration> 
       <source>1.8</source> 
       <target>1.8</target> 
       <compilerArguments> 
        <endorseddirs>${endorsed.dir}</endorseddirs> 
       </compilerArguments> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.3</version> 
      <configuration> 
       <failOnMissingWebXml>false</failOnMissingWebXml> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>2.6</version> 
      <executions> 
       <execution> 
        <phase>validate</phase> 
        <goals> 
         <goal>copy</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>${endorsed.dir} </outputDirectory> 
         <silent>true</silent> 
         <artifactItems> 
          <artifactItem> 
           <groupId>javax</groupId> 
           <artifactId>javaee-endorsed-api</artifactId> 
           <version>7.0</version> 
           <type>jar</type> 
          </artifactItem> 
         </artifactItems> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

Я испытал это в обоих wildfly 8.2.1 и Glassfish 4.1 с той же проблемой, но он отлично работает в Wildfly 10, проблема в том, что мой офис уже использует Wildfly 8.2.1, и они не хотят менять версию. Если кто-нибудь знает, почему это не работает, я был бы очень признателен, и если вам нужны какие-либо данные, я бы с радостью предоставил его. Спасибо заранее.

+0

Создает ли ваш файл войны, который вы развертываете, включает зависимости (файлы jar)? – pringi

+0

При использовании jar tvf SGA-1.0-SNAPSHOT.war он показывает мне все зависимости в WEB-INF/lib/папке, поэтому я предполагаю, что он включает в себя все из них –

ответ

1

Возможно, контейнер уже имеет более старую версию Jackson, и это создает проблемы с загрузкой классов.

Способ решения, который может содержать jboss-deployment-structure.xml файл. Таким образом, вы можете «вводить» ваши зависимости с более высоким приоритетом. См. Это classloading problems with Wildfly 8.0.0 для получения более подробной информации и примера.

Как и в документации в порядке наивысшего приоритета к низшему приоритету загрузки класса:

системы Зависимости - Эти зависимости, которые добавляются в модуль автоматически контейнером, в том числе Java EE API, ,

Зависимости пользователь - Эта зависимость, которые добавляются через JBoss-развертывания-structure.xml или через зависимости: манифест записи.

Местный ресурс - Файлы классов, упакованные внутри развертывания , например. файлы классов из WEB-INF/классов или WEB-INF/lib войны.

Взаимосвязь между развертываниями - Это зависимости от других развертываний в развертывании ушей. Это может включать классы в каталоге lib уха или классы, определенные в других банках ejb.

См. https://docs.jboss.org/author/display/WFLY8/Class+Loading+in+WildFly?_sscc=t для получения дополнительной информации.

+0

Спасибо, я начал смотреть, как сгенерировать этот XML-файл и решил его добавить следующие строки. имя <модуль имя = "com.fasterxml.jackson.core.jackson-ядро" /> <модуль = "com.fasterxml.jackson.core.jackson-DataBind "/> Спасибо за ваш help –

+0

@pringi был на правильном пути ... для пользователей из стекловолокна вы можете обратиться к [Децентратору загрузчика] (https://docs.oracle.com/cd/E19798-01/821-1752/6nmndgmhp/index.html # 6nmndgmhs). Вы можете изменить приоритет загрузки классов, установив '' в *** glassfish-web.xml *** файл, чтобы избежать чтения банок, установленных в контейнере (возможно, старых) по умолчанию –

Смежные вопросы