2017-06-05 9 views
1

MavenとのSpringブート1.5.2ビルドには非常に奇妙な問題があります。私が別のCentos 7を使用していて、戦争やjarファイルとしてアプリケーションを起動するのに問題はないので、それはジャクソンの依存関係に誤りがあるwarパッケージです。WARファイルを含むMavenのSpringブート・ジャックソン・エラーですが、com.fasterxml.jackson.core.JsonFactory.requiresPropertyOrdering()のjarファイルではありません。Z

JARまたは戦争するのMavenでビルドした後、私は

javar -jar target/project.war (or project.jar) 

で構築されたパッケージを実行し、Tomcatが起動します組み込みことができます。また、warパッケージは、CentOS 7のwebappsディレクトリにある外部のTomcatに配備することもできます。Ubuntu 16.04では、Tomcat Embedded/Externalでwarファイルが埋め込まれた.jarファイルしか実行できませんでした。ここで

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.web.filter.OrderedHttpPutFormContentFilter]: Factory method 'httpPutFormContentFilter' threw exception; nested exception is java.lang.NoSuchMethodError: com.fasterxml.jackson.core.JsonFactory.requiresPropertyOrdering()Z 
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189) 
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588) 
    ... 26 more 
Caused by: java.lang.NoSuchMethodError: com.fasterxml.jackson.core.JsonFactory.requiresPropertyOrdering()Z 
    at com.fasterxml.jackson.databind.ObjectMapper.<init>(ObjectMapper.java:564) 
    at com.fasterxml.jackson.databind.ObjectMapper.<init>(ObjectMapper.java:474) 
    at org.springframework.http.converter.json.Jackson2ObjectMapperBuilder.build(Jackson2ObjectMapperBuilder.java:588) 
    at org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.<init>(MappingJackson2HttpMessageConverter.java:57) 
    at org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter.<init>(AllEncompassingFormHttpMessageConverter.java:61) 
    at org.springframework.web.filter.HttpPutFormContentFilter.<init>(HttpPutFormContentFilter.java:63) 
    at org.springframework.boot.web.filter.OrderedHttpPutFormContentFilter.<init>(OrderedHttpPutFormContentFilter.java:29) 
    at org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration.httpPutFormContentFilter(WebMvcAutoConfiguration.java:142) 

は、私が唯一のオブジェクトにXMLをデシリアライズするために、ジャクソンから別の依存関係を追加POMファイルhttps://pastebin.com/13MwTm89です。ここ

<dependency> 
    <groupId>com.fasterxml.jackson.dataformat</groupId> 
    <artifactId>jackson-dataformat-xml</artifactId> 
    <version>2.8.7</version> 
</dependency> 

は、私はようやくのpom.xmlに個別に各依存関係をコメントアウトしようとした後、問題を発見し、それはでは非常に古いバージョンからfasterxmlによるものであるジャクソン

mvn dependency:tree | grep 'jackson' 
[INFO] +- com.fasterxml.jackson.dataformat:jackson-dataformat-xml:jar:2.8.7:compile 
[INFO] | +- com.fasterxml.jackson.core:jackson-core:jar:2.8.7:compile 
[INFO] | +- com.fasterxml.jackson.core:jackson-annotations:jar:2.8.0:compile 
[INFO] | +- com.fasterxml.jackson.core:jackson-databind:jar:2.8.7:compile 
[INFO] | +- com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.8.7:compile 
+0

なぜ 'jackson-annotations:jar:2.8.0'を使うのですか?残りはすべて2.8.7ですか? – StanislavL

+0

私からではなく、Spring-boot依存関係の親からです。 –

+0

バージョンをダウングレードしてください。または、春の依存関係を除外して正しいバージョン – StanislavL

答えて

0

のための完全な依存関係でありますjarファイルに生成される内部プロジェクトと、メインプロジェクトのpom.xmlに含まれています。

内部プロジェクトにはいくつかの依存関係があり、そのうちの1つにこの古いjackson-coreライブラリが含まれていると思います。grpcまたはprotobufだと思います。 Ubuntuの16.04、Mavenの3.3.9でどうにか

<dependencies> 
     <dependency> 
      <groupId>io.grpc</groupId> 
      <artifactId>grpc-all</artifactId> 
      <version>0.12.0</version> 
     </dependency> 
     <dependency> 
      <groupId>com.google.protobuf</groupId> 
      <artifactId>protobuf-java</artifactId> 
      <version>3.0.0-beta-1</version> 
     </dependency> 

     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.12</version> 
     </dependency> 
    </dependencies> 

このジャクソン・コアの代わりに春ブーツやのpom.xmlで直接指定から最新バージョンを好みます。

最新の依存関係を使用しているため、CentOS 7のMaven 3.5.0でJacksonと問題なく実行されているときは、この問題は発生しません。

関連する問題