web-dev-qa-db-ja.com

java.lang.NoSuchMethodError:javax.ws.rs.core.Application.getProperties()Ljava / util / Map;

次のリンクから回答が見つかりません

1つ2つ

以下は私のpom.xml依存関係です

<dependencies>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-Java-sdk</artifactId>
            <version>1.11.41</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.2</version>
            <type>jar</type>
        </dependency> 

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-Java</artifactId>
            <version>6.0.2</version>
        </dependency>

        <dependency>
            <groupId>javax.ws.rs</groupId>
            <artifactId>javax.ws.rs-api</artifactId>
            <version>2.0.1</version>
        </dependency>

        <dependency>
            <groupId>org.glassfish.jersey.containers</groupId>
            <artifactId>jersey-container-servlet</artifactId>
            <version>2.22</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.jvnet/mimepull -->
        <dependency>
            <groupId>org.jvnet</groupId>
            <artifactId>mimepull</artifactId>
            <version>1.6</version>
        </dependency>

        <dependency>
            <groupId>org.glassfish.jersey.media</groupId>
            <artifactId>jersey-media-json-jackson</artifactId>
            <version>2.22.1</version>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.glassfish.jersey.core</groupId>
            <artifactId>jersey-server</artifactId>
            <version>2.22</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.glassfish.jersey.core/jersey-common -->
        <dependency>
            <groupId>org.glassfish.jersey.core</groupId>
            <artifactId>jersey-common</artifactId>
            <version>2.22</version>
        </dependency>

        <dependency>
            <groupId>org.glassfish.jersey.media</groupId>
            <artifactId>jersey-media-multipart</artifactId>
            <version>2.22</version>
        </dependency>

        <dependency>
            <groupId>com.googlecode.json-simple</groupId>
            <artifactId>json-simple</artifactId>
            <version>1.1.1</version>
            <type>jar</type>
        </dependency>

        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/io.searchbox/jest -->
        <dependency>
            <groupId>io.searchbox</groupId>
            <artifactId>jest</artifactId>
            <version>2.0.2</version>
        </dependency>


        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <type>jar</type>
        </dependency>

        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.5</version>
            <type>jar</type>
        </dependency>

        <!-- https://mvnrepository.com/artifact/commons-validator/commons-validator -->
        <dependency>
            <artifactId>commons-validator</artifactId>
            <version>1.3.1</version>
        </dependency>

        <dependency>
            <groupId>oro</groupId>
            <artifactId>oro</artifactId>
            <version>2.0.8</version>
        </dependency>

    </dependencies>

私も~/.m2/repository/javax/ws/rs/javax.ws.rs-apiディレクトリですが、ディレクトリは1つだけです2.0.1

問題が理解できません。

私はTomcat 8を使用しています。

スタックトレース

19-Jul-2017 14:14:37.425 INFO [localhost-startStop-1] org.Apache.catalina.core.ApplicationContext.log ContextListener: contextInitialized()
19-Jul-2017 14:14:37.425 INFO [localhost-startStop-1] org.Apache.catalina.core.ApplicationContext.log SessionListener: contextInitialized()
19-Jul-2017 14:14:40.784 SEVERE [http-nio-8083-exec-5] org.Apache.catalina.core.ApplicationContext.log StandardWrapper.Throwable
 Java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()Ljava/util/Map;
    at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.Java:331)
    at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.Java:390)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.Java:172)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.Java:364)
    at javax.servlet.GenericServlet.init(GenericServlet.Java:158)
    at org.Apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.Java:1241)
    at org.Apache.catalina.core.StandardWrapper.load(StandardWrapper.Java:1044)
    at org.Apache.catalina.core.StandardContext.loadOnStartup(StandardContext.Java:4944)
    at org.Apache.catalina.core.StandardContext.startInternal(StandardContext.Java:5230)
    at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:150)
    at org.Apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.Java:725)
    at org.Apache.catalina.core.ContainerBase.addChild(ContainerBase.Java:701)
    at org.Apache.catalina.core.StandardHost.addChild(StandardHost.Java:714)
    at org.Apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.Java:581)
    at org.Apache.catalina.startup.HostConfig.deployApps(HostConfig.Java:455)
    at org.Apache.catalina.startup.HostConfig.check(HostConfig.Java:1493)
    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:498)
    at org.Apache.Tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.Java:300)
    at com.Sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.Java:819)
    at com.Sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.Java:801)
    at org.Apache.catalina.manager.ManagerServlet.check(ManagerServlet.Java:1432)
    at org.Apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.Java:884)
    at org.Apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.Java:335)
    at javax.servlet.http.HttpServlet.service(HttpServlet.Java:618)
    at javax.servlet.http.HttpServlet.service(HttpServlet.Java:725)
    at org.Apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.Java:291)
    at org.Apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.Java:206)
    at org.Apache.Tomcat.websocket.server.WsFilter.doFilter(WsFilter.Java:52)
    at org.Apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.Java:239)
    at org.Apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.Java:206)
    at org.Apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.Java:108)
    at org.Apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.Java:239)
    at org.Apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.Java:206)
    at org.Apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.Java:219)
    at org.Apache.catalina.core.StandardContextValve.invoke(StandardContextValve.Java:106)
    at org.Apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.Java:613)
    at org.Apache.catalina.core.StandardHostValve.invoke(StandardHostValve.Java:142)
    at org.Apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.Java:79)
    at org.Apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.Java:610)
    at org.Apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.Java:88)
    at org.Apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.Java:537)
    at org.Apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.Java:1085)
    at org.Apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.Java:658)
    at org.Apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.Java:222)
    at org.Apache.Tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.Java:1556)
    at org.Apache.Tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.Java:1513)
    at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1142)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:617)
    at org.Apache.Tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.Java:61)
    at Java.lang.Thread.run(Thread.Java:748)
16
Salman Shaikh

Java.lang.NoSuchMethodError:javax.ws.rs.core.Application.getProperties()Ljava/util/Map;

Application#getProperties() メソッドはJAX-RS 2.0で導入されました。また、このエラーは通常、JAX-RS 1.xとJAX-RS 2.xを混在させると発生します。

クラスパス上のJARを確認し、JAX-RS 1.x(およびJersey 1.x)に関連するすべてのものを削除してください。

Mavenを使用したら、 mvn dependency:tree を実行して、依存関係で何が起こっているかを確認できます。


また、頭痛の種となる可能性のあることがいくつかわかります。

  1. Tomcat 8の正しい Servlet API 依存関係を以下に示します(providedスコープを忘れないでください):

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1</version>
        <scope>provided</scope>
    </dependency>
    
  2. すべてのJersey依存関係が同じバージョンを使用していることを確認してください。

  3. おそらく、javax.ws.rs-apijersey-serverjersey-commonの依存関係は必要ありません。

    • jersey-container-servletjersey-media-json-jacksonjersey-media-multipartの依存関係を使用します。

    • jersey-container-servlet 依存関係では、推移的な依存関係としてjavax.ws.rs-apijersey-serverjersey-commonを使用します。

  4. おそらく、依存関係に<type>jar</type>は必要ありません。

12
cassiomolin

JSR jarはJAX-RSと競合し、上記のエラーを作成するため、以下に定義されているようにjarを除外することで解決できます。

<dependency>
 <groupId>javax.ws.rs</groupId>
 <artifactId>jsr311-api</artifactId>
 <version>1.1</version>
 <scope>provided</scope>
</dependency>

それを削除して実行してください、それは私にとってはうまくいき、あなたにとってもうまくいくことを願っています。

0
Prakhar Agrawal

私はカシオに同意します。追加したいことがいくつかあります。

  • 私にとっての依存関係はジャージーコアに存在していました。
  • Mvn dependency:treeで階層依存関係のみを確認できました。見逃したかもしれませんが、Eclipse階層ツリービューには表示されませんでした。
0
Ted_Zactly