2016-11-23 19 views
0

私はジャージーRESTサービスを備えたスプリングブートアプリケーションを持っています。私は、スタンドアロンの桟橋で私のwarファイルを展開する場合Jersey RESTサービス(Springブートで例外をスローする)java.lang.NoSuchMethodError:

java.lang.NoSuchMethodError: javax.validation.Configuration.getBootstrapConfiguration()Ljavax/validation/BootstrapConfiguration; 
at org.glassfish.jersey.server.validation.internal.ValidationBinder$ConfiguredValidatorProvider.getTraversableResolver(ValidationBinder.java:322) 
at org.glassfish.jersey.server.validation.internal.ValidationBinder$ConfiguredValidatorProvider.getDefaultValidatorContext(ValidationBinder.java:303) 
at org.glassfish.jersey.server.validation.internal.ValidationBinder$ConfiguredValidatorProvider.getDefaultValidator(ValidationBinder.java:282) 
at org.glassfish.jersey.server.validation.internal.ValidationBinder$ConfiguredValidatorProvider.provide(ValidationBinder.java:225) 
at org.glassfish.jersey.server.validation.internal.ValidationBinder$ConfiguredValidatorProvider.provide(ValidationBinder.java:195) 
at org.jvnet.hk2.internal.FactoryCreator.create(FactoryCreator.java:153) 
at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:471) 
at org.jvnet.hk2.internal.PerLookupContext.findOrCreate(PerLookupContext.java:70) 
at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2020) 
at org.jvnet.hk2.internal.ServiceLocatorImpl.internalGetService(ServiceLocatorImpl.java:766) 
at org.jvnet.hk2.internal.ServiceLocatorImpl.getUnqualifiedService(ServiceLocatorImpl.java:773) 
at org.jvnet.hk2.internal.IterableProviderImpl.get(IterableProviderImpl.java:111) 
at org.glassfish.jersey.server.model.ResourceMethodInvoker$Builder.build(ResourceMethodInvoker.java:153) 
at org.glassfish.jersey.server.internal.routing.RuntimeModelBuilder.createInflector(RuntimeModelBuilder.java:128) 
at org.glassfish.jersey.server.internal.routing.RuntimeModelBuilder.createMethodRouter(RuntimeModelBuilder.java:115) 
at org.glassfish.jersey.server.internal.routing.RuntimeModelBuilder.createResourceMethodRouters(RuntimeModelBuilder.java:309) 
at org.glassfish.jersey.server.internal.routing.RuntimeModelBuilder.buildModel(RuntimeModelBuilder.java:173) 
at org.glassfish.jersey.server.internal.routing.Routing$Builder.buildStage(Routing.java:196) 
at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:587) 
at org.glassfish.jersey.server.ApplicationHandler.access$500(ApplicationHandler.java:184) 
at org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHandler.java:350) 
at org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHandler.java:347) 
at org.glassfish.jersey.internal.Errors.process(Errors.java:315) 
at org.glassfish.jersey.internal.Errors.process(Errors.java:297) 
at org.glassfish.jersey.internal.Errors.processWithException(Errors.java:255) 
at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:347) 
at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:392) 
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:177) 
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:369) 
at javax.servlet.GenericServlet.init(GenericServlet.java:244) 
at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:640) 
at org.eclipse.jetty.servlet.ServletHolder.initialize(ServletHolder.java:419) 
at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:875) 
at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:349) 
at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1404) 
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1366) 
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:778) 
at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:262) 
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:520) 
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) 
at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:41) 
at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:188) 
at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:499) 
at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:147) 
at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:180) 
at org.eclipse.jetty.deploy.providers.WebAppProvider.fileAdded(WebAppProvider.java:452) 
at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:64) 
at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:610) 
at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:529) 
at org.eclipse.jetty.util.Scanner.scan(Scanner.java:392) 
at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:313) 
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) 
at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:150) 
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) 
at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:561) 
at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:236) 
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) 
at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:131) 
at org.eclipse.jetty.server.Server.start(Server.java:411) 
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:113) 
at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61) 
at org.eclipse.jetty.server.Server.doStart(Server.java:378) 
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) 
at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1516) 
at java.security.AccessController.doPrivileged(Native Method) 
at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1441) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.eclipse.jetty.start.Main.invokeMain(Main.java:214) 
at org.eclipse.jetty.start.Main.start(Main.java:457) 
at org.eclipse.jetty.start.Main.main(Main.java:75) 

以下のように、それは、ここに私のpom.xmlファイル

そのjavax.validationがどこから来ている理解しようと
<parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.4.1.RELEASE</version> 
    </parent> 
    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-jpa</artifactId> 
      <exclusions> 
       <exclusion> 
        <groupId>org.hibernate</groupId> 
        <artifactId>hibernate-entitymanager</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
      <exclusions> 
       <exclusion> 
        <groupId>org.springframework.boot</groupId> 
        <artifactId>spring-boot-starter-tomcat</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>org.apache.tomcat</groupId> 
        <artifactId>tomcat-juli</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>org.apache.tomcat</groupId> 
        <artifactId>tomcat-jdbc</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-jersey</artifactId> 
      <exclusions> 
       <exclusion> 
        <groupId>org.springframework.boot</groupId> 
        <artifactId>spring-boot-starter-tomcat</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 

     <!-- <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jetty</artifactId> 
      <scope>provided</scope> </dependency> --> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>javax.servlet-api</artifactId> 
      <version>3.1.0</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.glassfish.jersey.containers</groupId> 
      <!-- if your container implements Servlet API older than 3.0, use "jersey-container-servlet-core" --> 
      <artifactId>jersey-container-servlet</artifactId> 
      <version>2.23.2</version> 
     </dependency> 
     <!-- JPA Provider --> 
     <dependency> 
      <groupId>org.apache.openjpa</groupId> 
      <artifactId>openjpa-persistence</artifactId> 
      <version>2.4.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.openjpa</groupId> 
      <artifactId>openjpa-maven-plugin</artifactId> 
      <version>2.4.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.openjpa</groupId> 
      <artifactId>openjpa-all</artifactId> 
      <version>2.4.1</version> 
     </dependency> 

で例外がスローされます私はvalidation-api-1.1.0-final.jarhibernate-validator-5.2.4-final.jarを私の戦争ファイルに入れています。

Hibernate-validator validation-api

答えて

0

それが理想的であるかどうかわからが、私はspring-boot-starter-jersey

2

だからあなたの桟橋は、バージョン1.1(またはそれ以降)でのjavax検証-APIを必要とし、あなたはすでにそれを知っています。他のいくつかのライブラリは、実際には別の(より古い)バージョンの検証-apiに推移的依存関係を結び付けています。使用しているHibernate-Validator(5.2.4)のバージョンは、Validator-Api 1.1.0(see here)を使用しています。

Mavenを使用しているので、完全な依存関係のツリーを表示して手動で追跡するには、Maven Dependency Pluginを使用することをお勧めします。

+0

の私の依存から

 <exclusion> <groupId>org.glassfish.jersey.ext</groupId> <artifactId>jersey-bean-validation</artifactId> </exclusion> 

によってこの問題を解決していない私は維持するためにどの1理解していません。私はspring-boot-starter-webとspring-boot-startter-jerseyが競合する瓶を持って来るのを見ることができます。 – yogsma

+0

質問を編集し、Maven Dependency Pluginの完全な出力を入れてもよろしいですか?あなたがそれを置くには余りにもない場合、あなたはhttp://pastebin.com/を使用することができます。 –

+0

申し訳ありませんが私は日食を使用しています...私は日食でそれを得ることができますか? – yogsma

関連する問題