当前位置: 首页 > 面试题库 >

Tomcat 7 + Jersey 2.0错误

顾赞
2023-03-14
问题内容
java.lang.AbstractMethodError: javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)Ljavax/ws/rs/core/UriBuilder;
    at javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:119)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:289)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:221)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

Maven依赖项:

<dependency>
        <groupId>org.glassfish.jersey.ext</groupId>
        <artifactId>jersey-spring3</artifactId>
        <version>2.11</version>
    </dependency>

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

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.3.2</version>
    </dependency>

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

    <dependency>
        <groupId>org.glassfish.jersey.connectors</groupId>
        <artifactId>jersey-apache-connector</artifactId>
        <version>2.10.1</version>
    </dependency>

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

    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-client</artifactId>
        <version>2.11</version>
    </dependency>

    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-server</artifactId>
        <version>1.8</version>
    </dependency>

    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-common</artifactId>
        <version>2.11</version>
    </dependency>

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.2.3</version>
    </dependency>

    <dependency>
        <groupId>asm</groupId>
        <artifactId>asm-all</artifactId>
        <version>3.3.1</version>
    </dependency>

    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.2</version>
    </dependency>

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-pool2</artifactId>
        <version>2.2</version>
    </dependency>

    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-json-jackson</artifactId>
        <version>2.4.1</version>
    </dependency>

    <dependency>
        <groupId>org.glassfish.jersey.ext</groupId>
        <artifactId>jersey-spring3</artifactId>
        <version>2.11</version>
    </dependency>

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

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

web.xml

<servlet>
    <servlet-name>MessageService</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>javax.ws.rs.core.Application</param-name>
        <param-value>MessageService</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

 <servlet-mapping>
    <servlet-name>MessageService</servlet-name>
    <url-pattern>/api/*</url-pattern>
</servlet-mapping>

服务等级

@Path("/messageService")
public class MessageService{

public MessageService() {
}

private static Logger logger = Logger.getLogger(MessageService.class);

@GET
@Path("/getMessages")
@Produces(MediaType.APPLICATION_JSON)
public List<MessageModel> getMessage(Integer subCatId) {
  return "something";
}

一直在努力寻找导致此错误的原因。任何帮助,将不胜感激。


问题答案:

看起来您有2个冲突的依赖项:

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

和:

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

尝试删除1.1.1版本。



 类似资料:
  • 如果我调用tomcat服务器的默认url,我将看到一个错误404。程序运行时没有任何问题,但restcontroller可能已禁用(我不知道,通常不知道)。日志中没有错误。起始页是html格式。我设置了默认路径(见下文)。 我正在使用Spring Boot和tomcat7。 请求的资源(/dashboard/)不可用。 Spring Boot路径src\main\resources\templat

  • 我正在Java web应用程序中使用。现在,我可以使用命令运行我的web服务器。最近我注意到https://tomcat.apache.org/maven-plugin-2.0/tomcat7-maven-plugin/plugin-info.html中有一个名为的命令,它说: tomcat7:run: 使用嵌入式Tomcat服务器将当前项目作为动态web应用程序运行。 tomcat7:run-w

  • 问题内容: 当我将https更改为tomcat 7.0的server.xml中的安全连接时 从IDE运行Tomcat时出现错误 造成原因:java.io.FileNotFoundException:C:\ Documents and Settings \ User.keystore(系统找不到指定的文件),位于java.io.FileInputStream.open(本机方法) 但是运行tomca

  • 我正在将tomcat6升级到tomcat7。目前,该应用程序在tomcat6上部署并运行良好。 这是配置: web.xml 在里面jsp: 我有jstl-1.2.jar,jstl-api-1.2.jar,jstl-1.2jar在我的Tomcat/lib目录(与Tomcat6相同)。 我最终得到了与此相关的各种异常,例如: 在我的pom里。我要开车了 Tomcat7是否应该不支持2.5?我尝试过使用

  • 当我在tomcat 7.0的server.xml中为安全连接更改https时 这两个怎么了?请解释我!多谢了。

  • 以下是我的POM中的一些相关片段: 版本:Maven 3.0.4、Tomcat Maven Plugin2.1、Jacoco 0.6.2.201302030002、Java7

  • 我正在尝试将我的应用程序迁移到使用tomcat7而不是tomcat5。5但是得到下面的错误。我正在为Windows 32位机器使用tomcat-7.0.27: Jun29, 2012 3:01:05PMorg.apache.jasper.compiler.TldLocationsCache tldScanJar INFO:至少扫描了一个JAR的TLD,但没有包含TLD。为此记录器启用调试日志记录,

  • 本文向大家介绍详解Tomcat7中WebSocket初探,包括了详解Tomcat7中WebSocket初探的使用技巧和注意事项,需要的朋友参考一下 HTML5中定义了WebSocket规范,该规范使得能够实现在浏览器端和服务器端通过WebSocket协议进行双向通信。 在Web应用中一个常见的场景是Server端向Client端推送某些消息,要实现这项功能,按照传统的思路可以有以下可选方案: Aj