33

アプリケーションを起動しようとしましたが、使用するTomcat 7と、このような例外が発生しました。

これは で何かできると思いますがMaven dependency、確信しています。何が起こっているのか知っている人がいたら、答えてください:)

例外:

message Servlet execution threw an exception

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Servlet execution threw an exception
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

root cause

java.lang.AbstractMethodError: javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)Ljavax/ws/rs/core/UriBuilder;
    javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:119)
    com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:651)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.50 logs.

Maven POM:

<properties>
        <application.version>1.0</application.version>
        <spring.version>4.0.0.RELEASE</spring.version>
        <spring.security.version>3.2.0.RELEASE</spring.security.version>
        <jersey.version>1.18.1</jersey.version>
    </properties>



    <dependencies>
        <dependency>
            <groupId>climbing-portal-facade</groupId>
            <artifactId>climbing-portal-facade</artifactId>
            <version>${application.version}</version>
        </dependency>
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-core</artifactId>
            <version>${jersey.version}</version>
        </dependency>
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-server</artifactId>
            <version>${jersey.version}</version>
        </dependency>
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-json</artifactId>
            <version>${jersey.version}</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.test-framework.providers</groupId>
            <artifactId>jersey-test-framework-provider-jdk-http</artifactId>
            <version>2.7</version>
        </dependency>

        <!-- Jersey + Spring -->
        <dependency>
            <groupId>com.sun.jersey.contribs</groupId>
            <artifactId>jersey-spring</artifactId>
            <version>${jersey.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-core</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-web</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-beans</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-context</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-aop</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
    </dependencies>

何か案が ?

4

8 に答える 8

51

両方を使用していますJersey 1 & 2(Jersey 1 は明示的な依存関係であり、Jersey 2 は の推移的な依存関係ですjersey-test-framework-provider-jdk-http)、それは不可能です。したがって、classloaderは間違ったURIBuilderクラスを選択しています。

Jersey依存関係group com.sun.jerseyはすべてJersey version 1. Jersey version 2はグループを使用しorg.glassfish.jerseyます。

Mavenこの問題を引き起こしている依存関係に両方があります。

可能な場合のみ使用してJersey 2ください。

于 2014-04-29T21:03:38.540 に答える
3

気が付かなかったのですが、サーバーのWEB-INF/libフォルダにjavax.ws-rs-api-2.0.jarというファイルが既にありました。2年前に別の人が追加したものです。WEB-INF/libフォルダーにコピーした一連のジャージー ファイルと競合していました。ファイルをバックアップして名前を変更し、コンテナー (Tomcat など) のサービスを再起動したところ、機能しました。

于 2015-07-21T15:11:26.983 に答える
3

正確な問題が問題を見つけることができませんでした。初めてTomcatが起動し、すべてが機能しましたが、サーバーを再起動した後、例外が発生しました。

解決策は、Tomcat を 7.0.26 にダウングレードすることでした。

于 2015-01-14T09:31:26.480 に答える