【发布时间】:2020-09-26 18:23:55
【问题描述】:
所以我试图在 Eclipse 上使用 Tomcat 和 Maven 制作一个非常简单的 Web 服务。我在 pom.xml 中添加了这些依赖项:
<dependencies>
<!-- https://mvnrepository.com/artifact/javax.ws.rs/javax.ws.rs-api -->
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.1.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.glassfish.jersey.core/jersey-client -->
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>3.0.0-M1</version>
</dependency>
</dependencies>
我刚刚将此添加到我的默认 web.xml:
<servlet>
<servlet-name>jersey-servlet</servlet-name>
<servlet-class>
com.sun.jersey.spi.container.servlet.ServletContainer
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-servlet</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
我只是想得到一个简单的字符串:
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("car")
public class Car {
@GET
@Path("carName")
@Produces(MediaType.TEXT_PLAIN)
public String carName() {
return "Subaru";
}
}
控制台日志:
SEVERE: Servlet [jersey-servlet] in web application [/WebService01] threw load() exception
java.lang.ClassNotFoundException: org.glassfish.jersey.servlet.ServletContainer
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1365)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1188)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:540)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:521)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:150)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1042)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:983)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4871)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5180)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)
...
在 macCatalina 10.15.4 上运行
【问题讨论】:
-
Tomcat 正在运行(catalina 日志)? Web 应用程序启动时没有错误(应用程序日志)?
-
@Serge 感谢您的回复。我在日志上看到一条错误消息,并通过在 web.xml 上编辑一个空格来纠正它。但是现在我遇到了另一个错误,如我编辑的答案所示。提前谢谢。
-
根本原因文本下面是什么?
-
@nitind 感谢您的回复,我编辑了我的问题。
-
您编译的 Java 遵从性如何?那个(旧)版本的 Jersey 是从 2015 年开始的,它正在读取类文件,并且可能比 Java 8 更新的任何东西都可能导致它出现问题。
标签: java eclipse maven web-services tomcat