无法在 Eclipse 中创建简单的 java rest api
Unable to create simple java restapi in eclipse
我正在关注这个 link 在 Eclipse 中创建一个简单的 Java restApi:https://www.youtube.com/watch?v=5jQSat1cKMo.
但是,我收到 404 响应并且控制台报告错误
java.lang.ClassNotFoundException: org.glassfish.jersey.servlet.ServletContainer.class
动态web项目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>JAVA_API</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>JAVA_API</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
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_XML)
public String sayHello() {
String resource = "<? xml version='1.0' ?>" +
"<hello> Hi eesh, hello from xml</hello>";
return resource;
}
@GET
@Produces(MediaType.APPLICATION_JSON)
public String sayHelloJASON() {
String resource = null;
return resource;
}
@GET
@Produces(MediaType.TEXT_HTML)
public String sayHelloHTML() {
String resource = "<h1> hi eesh, from html</h1>";
return resource;
}
}
tomcat版本是8.5,jax-rs-2.25..
localhost:8080 在 chrome 浏览器中和在 tomcat 服务器上执行程序时不显示 apache 主页...我得到以下响应..
我在其他 link 中提到了这个问题:
org.glassfish.jersey.servlet.ServletContainer ClassNotFoundException
java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer
Jersey Services with Tomcat and Eclipse
我已经尝试了大部分解决方案,none 其中似乎有效。此外,我想在不将其转换为 maven 项目的情况下执行此操作。
感谢任何帮助。
servlet-class
应包含完全限定的 class 名称。 .class
扩展名只是磁盘上 文件名 的一部分,而不是 class 名称 的一部分。删除它。
我正在关注这个 link 在 Eclipse 中创建一个简单的 Java restApi:https://www.youtube.com/watch?v=5jQSat1cKMo.
但是,我收到 404 响应并且控制台报告错误
java.lang.ClassNotFoundException: org.glassfish.jersey.servlet.ServletContainer.class
动态web项目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>JAVA_API</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>JAVA_API</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
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_XML)
public String sayHello() {
String resource = "<? xml version='1.0' ?>" +
"<hello> Hi eesh, hello from xml</hello>";
return resource;
}
@GET
@Produces(MediaType.APPLICATION_JSON)
public String sayHelloJASON() {
String resource = null;
return resource;
}
@GET
@Produces(MediaType.TEXT_HTML)
public String sayHelloHTML() {
String resource = "<h1> hi eesh, from html</h1>";
return resource;
}
}
tomcat版本是8.5,jax-rs-2.25..
localhost:8080 在 chrome 浏览器中和在 tomcat 服务器上执行程序时不显示 apache 主页...我得到以下响应..
我在其他 link 中提到了这个问题:
org.glassfish.jersey.servlet.ServletContainer ClassNotFoundException java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer Jersey Services with Tomcat and Eclipse
我已经尝试了大部分解决方案,none 其中似乎有效。此外,我想在不将其转换为 maven 项目的情况下执行此操作。
感谢任何帮助。
servlet-class
应包含完全限定的 class 名称。 .class
扩展名只是磁盘上 文件名 的一部分,而不是 class 名称 的一部分。删除它。