2017-07-03 62 views
0

我是新泽西人,尝试创建使用其他Web服务并响应json的项目。以下是我的pom.xml使用Jersey的Maven中的REST Web应用程序

<project 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" 
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<modelVersion>4.0.0</modelVersion> 
<parent> 
    <groupId>com.modaltestapp</groupId> 
    <artifactId>modaltestapp</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
</parent> 
<groupId>com.modaltestapp</groupId> 
<artifactId>modaltestapp-api</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>war</packaging> 
<name>modaltestapp-api Maven Webapp</name> 
<url>http://maven.apache.org</url> 

<properties> 
    <slf4j.version>1.7.9</slf4j.version> 
    <logback.version>1.1.2</logback.version> 
</properties> 
<dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 

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



</dependencies> 
<build> 
    <finalName>modaltestapp-api</finalName> 
</build> 

的web.xml

<web-app id="WebApp_ID" version="2.4" 
xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
<display-name>Restful Web Application</display-name> 


<servlet> 
<servlet-name>helloworld</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.modaltestapp.service</param-value> 
    </init-param> 
    <init-param> 
     <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>helloworld</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 

和Java文件是:

@GET 
@Path("/print") 
@Produces({ MediaType.APPLICATION_JSON }) // add MediaType.APPLICATION_XML 
              // if you want XML as well 
              // (don't forget 
              // @XmlRootElement) 
public List<RegistrationDto> getAllMessages() throws Exception { 

    List<RegistrationDto> messages = new ArrayList<RegistrationDto>(); 

    RegistrationDto m = new RegistrationDto(); 

    m.setFirstName("Nabi"); 
    m.setLastName("Zamani"); 
    m.setAge(30); 

    messages.add(m); 

    System.out.println("getAllMessages(): found " + messages.size() + " message(s) on DB"); 

    return messages; // do not use Response object because this causes 
         // issues when generating XML automatically 
} 

但是当我建立和运行应用程序它显示我的错误:

INFO: Starting Servlet Engine: Apache Tomcat/9.0.0.M21 
Jul 03, 2017 11:12:24 AM org.apache.catalina.core.ApplicationContext log 
    INFO: Marking servlet [helloworld] as unavailable 
Jul 03, 2017 11:12:24 AM org.apache.catalina.core.StandardContext 
loadOnStartup 
SEVERE: Servlet [helloworld] in web application [/modaltestapp-api] threw 
    load() exception 
java.lang.ClassNotFoundException: 
com.sun.jersey.spi.container.servlet.ServletContainer 
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1275) 
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1109) 
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:508) 
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:489) 
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:119) 
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1050) 
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:989) 
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4921) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5231) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1439) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1429) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) 
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134) 
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:953) 
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:872) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1439) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1429) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) 
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134) 
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:953) 
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) 
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:422) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) 
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:793) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) 
at org.apache.catalina.startup.Catalina.start(Catalina.java:656) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:498) 
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:355) 
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:495) 

Jul 03, 2017 11:12:24 AM org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["http-nio-8080"] 
Jul 03, 2017 11:12:24 AM org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["ajp-nio-8009"] 
Jul 03, 2017 11:12:24 AM org.apache.catalina.startup.Catalina start 
INFO: Server startup in 317 ms 

我该如何解决这个问题?我正在使用Apache Tomcat 9.

回答

0

[您可以关注此帖以解决您的问题。请确保您拥有所有的罐子。 pom.xml中缺少“jersey-servlet”maven dependency。

<groupId>com.sun.jersey</groupId> 
<artifactId>jersey-servlet</artifactId> 
<version>1.17</version> 

] 1 [请点击此链接] 1

相关问题