2016-10-14 5 views
2

Tomcat8に問題なく展開できるRESTアプリケーションがあります。私はJetty9サーバで同じことをしようとすると、それが例外をスロー:Jersey 2 + solr 4.6.1 maven ClassNotFoundException com.sun.jersey.spi.inject.InjectableProvider

Caused by: 
java.lang.ClassNotFoundException: com.sun.jersey.spi.inject.InjectableProvider 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
     at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:487) 
     at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:428) 
     at java.lang.ClassLoader.defineClass1(Native Method) 
     at java.lang.ClassLoader.defineClass(ClassLoader.java:760) 
     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
     at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) 
     at java.net.URLClassLoader.access$100(URLClassLoader.java:73) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:368) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:362) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:361) 
     at org.eclipse.jetty.webapp.WebAppClassLoader.findClass(WebAppClassLoader.java:550) 
     at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:475) 
     at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:428) 
     at org.eclipse.jetty.util.Loader.loadClass(Loader.java:86) 
     at org.eclipse.jetty.plus.annotation.ContainerInitializer.callStartup(ContainerInitializer.java:130) 
     at org.eclipse.jetty.annotations.ServletContainerInitializersStarter.doStart(ServletContainerInitializersStarter.java:63) 
     at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) 
     at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:330) 
     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(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:497) 
     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) 

私はJersey1の依存関係(com.sun.jersey)を使用していないので、それは奇妙です。私は、次のように見えるだけのpom.xmlで空のプロジェクトを作成して問題を特定しようとしている理由:私は問題がsolr-だったことを知るまで

<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.example</groupId> 
    <artifactId>bigBoWS_test</artifactId> 
    <packaging>war</packaging> 
    <version>1.0</version> 
    <name>BigBoWS Maven Webapp</name> 
    <url>http://maven.apache.org</url> 
    <dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>3.8.1</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.glassfish.jersey.containers</groupId> 
      <artifactId>jersey-container-servlet</artifactId> 
      <version>2.14</version> 
     </dependency> 
     <dependency> 
      <groupId>org.glassfish.jersey.media</groupId> 
      <artifactId>jersey-media-json-jackson</artifactId> 
      <version>2.22.2</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.solr</groupId> 
      <artifactId>solr-core</artifactId> 
      <version>4.6.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.solr</groupId> 
      <artifactId>solr-solrj</artifactId> 
      <version>4.6.1</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>javax.servlet-api</artifactId> 
      <version>3.1.0</version> 
     </dependency> 
    </dependencies> 
    <build> 
     <finalName>${project.artifactId}</finalName> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

私は依存関係を一つずつ取り除いてみましたコア依存性。その依存関係を削除すると、Jettyサーバーは何のエラーも与えません。これはその依存関係のないポンです。

<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.example</groupId> 
    <artifactId>bigBoWS_test</artifactId> 
    <packaging>war</packaging> 
    <version>1.0</version> 
    <name>BigBoWS Maven Webapp</name> 
    <url>http://maven.apache.org</url> 
    <dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>3.8.1</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.glassfish.jersey.containers</groupId> 
      <artifactId>jersey-container-servlet</artifactId> 
      <version>2.14</version> 
     </dependency> 
     <dependency> 
      <groupId>org.glassfish.jersey.media</groupId> 
      <artifactId>jersey-media-json-jackson</artifactId> 
      <version>2.22.2</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.solr</groupId> 
      <artifactId>solr-solrj</artifactId> 
      <version>4.6.1</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>javax.servlet-api</artifactId> 
      <version>3.1.0</version> 
     </dependency> 
    </dependencies> 
    <build> 
     <finalName>${project.artifactId}</finalName> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

このライブラリを使用して、なぜ私は理解していないが、「誰かが」com.sum.jerseyを要求...私はorg.glassfish.jerseyを使用していますジャージー2を...使用しているとき

ありがとうございます。

+0

私たちはpomにsolrを追加するだけで、同じエラーが発生します...これを解決するためのあなたの側の進歩? –

答えて

0

tomcat8からjetty9に移行するときに、私のプロジェクトで同じ問題が発生しました。 solr-coreのスコープを 'コンパイル'から 'テスト'に変更することで、この問題を解決できました。もちろん、これは私たちの特定のプロジェクトでは幸運にも可能でしたが、あなたのプロジェクトでは不可能かもしれません。

<dependency> 
     <groupId>org.apache.solr</groupId> 
     <artifactId>solr-core</artifactId> 
     <version>6.3.0</version> 
     <scope>test</scope> 
    </dependency> 

注:ご質問ありがとうございます。 solr-coreへの依存という根本原因は決して見つけられませんでした。確かに、なぜこのライブラリを使用すると "誰か"がcom.sum.jerseyを尋ねるのはなぜか謎です。

関連する問題