【问题标题】:Java Rest ServerJava 休息服务器
【发布时间】:2018-06-27 06:36:41
【问题描述】:

我已尝试多次重新安装 tomcat 并遵循本教程: https://www.youtube.com/watch?v=5jQSat1cKMo

但是我总是得到这个错误:

源服务器没有找到目标资源的当前表示或不愿意透露存在的表示。

此处截图:

这是我当前的 Hello.java 类:

package test;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("/hello")
public class Hello {

	@GET
	@Produces(MediaType.TEXT_PLAIN)
	public String sayHello() {
		String resource="This is some test return text";
		return resource;
	}
}

当前 web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>JavaAPI</display-name>
  <servlet>
  	<servlet-name>JavaAPI</servlet-name>
  	<servlet-class>org.glassfish.jersey.servlet.ServletContainer.class</servlet-class>
  	<init-param>
  		<param-name>jersey.config.server.provider.packages</param-name>
  		<param-value>test</param-value>
  	</init-param>
  	<load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
  	<servlet-name>JavaAPI</servlet-name>
  	<url-pattern>/rest/*</url-pattern>
  </servlet-mapping>
</web-app>

我尝试过使用和不使用以下额外导入:

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;

我错过了什么?

更新:
我正在使用普通的 IDE
我也在使用 Jersey JAX-RS 2.1

【问题讨论】:

  • 您能否提供更多信息,例如,您是使用 maven/gradle 等构建工具还是使用 IDE。另请发布您在此项目中使用的依赖项。
  • @SukmaWardana 我已经更新了这个问题。我使用普通的 IDE 和 Jersey JAX-RS 2.1
  • 可能是Tomcat本身的原因。你确定它配置正确吗?
  • 那么您如何管理 JAX-RS 依赖项?您是否将它与您的项目一起发布或放在 Apache Tomcat 上?供您参考,Apache Tomcat 只是一个 servlet 容器,我建议您查看 Apache TomEE,因为它已经附带了 JAX-RS 依赖项。
  • @Laurynas 我可以在 Eclipse 之外运行 Tomcat 时使用它。 i.imgur.com/VNJQWVT.jpg

标签: java rest tomcat8


【解决方案1】:

web.xml 中的这一行看起来不正确:

<servlet-class>org.glassfish.jersey.servlet.ServletContainer.class</servlet-class>

The Java Servlet Specification Version 4.0(第 14-164 页)声明:

servlet 类包含 完全限定的类名 小服务程序。

但是您指定的是 servlet 的完全限定类名和 servlet 的文件名的混合,导致 Tomcat 查找不存在的 servlet,因此您收到 404 错误。

只需从 &lt;servlet-class&gt; 值中删除 .class:

<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-15
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    相关资源
    最近更新 更多