java - HTTP 状态 500 - servlet jersey 的 Servlet.init() -servlet 抛出异常

标签 java maven tomcat servlets jersey

请大家帮帮我..我正在 tomcat 上运行一个简单的 maven 项目,但出现此错误:

HTTP Status 500 - Servlet.init() for servlet jersey-serlvet threw exception
type Exception report

message Servlet.init() for servlet jersey-serlvet threw exception description The server encountered an internal error that prevented it from fulfilling this request.

javax.servlet.ServletException: Servlet.init() for servlet jersey-serlvet threw exception 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506) 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962) 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445) 
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115) 
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637) 
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:6java.lang.Thread.run(Unknown Source) 

根本原因

 com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not contain any root resource classes.
com.sun.jersey.server.impl.application.RootResourceUriRules.<init>(RootResourceUriRules.java:99)
com.sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.java:1298)
com.sun.jersey.server.impl.application.WebApplicationImpl.access$700(WebApplicationImpl.java:169)
com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:775)
com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:771)
com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193)
com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:771)
com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:766)
com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:488)
com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:318)
com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:609)
com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:210)
com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:373)
com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:556)
javax.servlet.GenericServlet.init(GenericServlet.java:158)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)

我的java文件是:

package com.mysterious;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;


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

@GET
 @Path("/{param}")
public Response getMsgWithParam(@PathParam("param") String msg) {
    String output = "Jersey say : " + msg;
    return Response.status(200).entity(output).build();
}

@GET
public Response getMsg() {
    String output = "Welcome to WebService";
    return Response.status(200).entity(output).build();
}

Web.xml

<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
   <display-name>Archetype Created Web Application</display-name>

<servlet>
    <servlet-name>jersey-serlvet</servlet-name>
    <servlet-class>
                 com.sun.jersey.spi.container.servlet.ServletContainer
            </servlet-class>
    <init-param>
         <param-name>com.sun.jersey.config.property.packages</param-name>
         <param-value>com.mysterious</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>jersey-serlvet</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

pom.XML

 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mysterious</groupId>
  <artifactId>RestWs</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>RestWs Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
  <dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-web-api</artifactId>
    <version>6.0</version>
    <scope>provided</scope>
</dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/javax.servlet/servlet-api -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>3.0-alpha-1</version>
    <scope>provided</scope>
</dependency>

  </dependencies>
  <build>
    <finalName>RestWs</finalName>
  </build>
</project>

最佳答案

在您的 pom.xml 中,您没有包含 Jersey 。您需要将 jersey 添加到您的依赖项中

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

url应该是

localhost:8080/RestWs/hello/yourname

关于java - HTTP 状态 500 - servlet jersey 的 Servlet.init() -servlet 抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48354663/

相关文章:

java - Maven Shade 插件不会重新定位公共(public)日志记录

java - java executorService 与 tomcat 中的最大线程数

java - Hadoop:0.20.203 中的链接作业

java - 有什么方法可以使用 JAX-WS 从 Javadoc 生成 WSDL 文档?

java - 一个post请求对象可以在另一个post请求中转发吗?

java - 多个slf4j绑定(bind)mavenstormcv

java - Swing MVC JTextPane 以及其他人通常使用的

java - 较新依赖项中的 Maven 不同包名

java - 将 Websockets 实现到我的 Tomcat Servlet 中?

spring - MonitorFilter::WARNING:监控过滤器必须是链中的第一个过滤器