当前位置: 首页 > 知识库问答 >
问题:

在apache tomcat 7.0上运行时,泽西2.7问题

步嘉德
2023-03-14

我正在使用ApacheTomcat7.0和eclipse创建一个jersey应用程序。我在eclipse中创建了一个动态web项目,并将资源文件定义为:-

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

// Plain old Java Object it does not extend as class or implements 
// an interface

// The class registers its methods for the HTTP GET request using the @GET annotation. 
// Using the @Produces annotation, it defines that it can deliver several MIME types,
// text, XML and HTML. 

// The browser requests per default the HTML MIME type.

//Sets the path to base URL + /hello
@Path("/hello")
public class Hello {

  // This method is called if TEXT_PLAIN is request
  @GET
  @Produces(MediaType.TEXT_PLAIN)
  public String sayPlainTextHello() {
    return "Hello Jersey";
  }

  // This method is called if XML is request
  @GET
  @Produces(MediaType.TEXT_XML)
  public String sayXMLHello() {
    return "<?xml version=\"1.0\"?>" + "<hello> Hello Jersey" + "</hello>";
  }

  // This method is called if HTML is request
  @GET
  @Produces(MediaType.TEXT_HTML)
  public String sayHtmlHello() {
    return "<html> " + "<title>" + "Hello Jersey" + "</title>"
        + "<body><h1>" + "Hello Jersey" + "</body></h1>" + "</html> ";
  }

} 

网状物xml文件也创建如下-

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>de.vogella.jersey.first</display-name>
  <servlet>
    <servlet-name>Jersey REST Service</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
      <param-name>jersey.config.server.provider.packages</param-name>
      <param-value>de.vogella.jersey.first</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Jersey REST Service</servlet-name>
    <url-pattern>/rest/*</url-pattern>
  </servlet-mapping>
</web-app> 

以下jar文件已添加到web inf中的lib文件夹中,并且在部署war文件后,也将以目录结构出现在web应用程序中。

一旦启动tomcat并部署war文件,就会出现以下错误:

org.apache.catalina.生命周期异常:启动组件失败[标准引擎[Catalina]。localhost。de.vogella.jersey.first]在org.apache.catalina.util.ase.start(ase.java:154)在org.apache.catalina.core.ContainerBase.add儿童内部(ContainerBase.java:901)在org.apache.catalina.core.ContainerBase.add儿童(ContainerBase.java:877)在org.apache.catalina.core.标准ost.add儿童(标准ost.java:634)在org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1074)在org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig. java: 1858)执行器$RunnableAdapter. call(Executors. java: 471)在java. util. con当前。未来任务$Sync. innerRun(FutureTaskc. java: 334)在java. util. con当前。FutureWork. run(FutureTasks. java: 166)at java. util. con当前。ThreadPoolExecutor. runWorker(ThreadPoolExecutor. java: 1145)在java. util. con当前。在java. lang上运行(ThreadPoolExecator. java: 615)。线程. run(Thread. java: 724)引起:java. lang.NoClassDefFoundError:在org. glassfish. jersey. interals上的jersey/re包/com/google/通用/base/Function。服务查找。java: 165)在org. glassish. jersey. servlet. interal。ServletContainerProviderFactory. getAllServletContainerProviders(ServletContainerProviderFactory. java: 66)在org. glassish. jersey. servlet. init。java: 132)在org. apache. catalina. core.在org. apache. catalina. utila上的标准内容。11更多原因:java. lang.ClassNotFoundExcema: jersey. rePackage. com. google. co. base.函数在org. apache. catalina. loader。在org. apache. catalina. loadClass(WebappClassLoader. java: 1702)。WebappClassLoader. loadClass(WebappClassLoader. java: 1547)...16 more

我已将以下jar添加到lib文件夹:

**/de.vogella.jersey.first/WebContent/WEB-INF/lib/guava-16.0.1.jar
/de.vogella.jersey.first/WebContent/WEB-INF/lib/jersey-client.jar
/de.vogella.jersey.first/WebContent/WEB-INF/lib/jersey-common.jar
/de.vogella.jersey.first/WebContent/WEB-INF/lib/jersey-container-servlet-core.jar
/de.vogella.jersey.first/WebContent/WEB-INF/lib/jersey-container-servlet.jar
/de.vogella.jersey.first/WebContent/WEB-INF/lib/jersey-server.jar**

但是这个错误还是会发生,请告诉我哪里出了问题。

共有3个答案

漆雕原
2023-03-14

能够为泽西2.8获得基本的REST网络服务。一定要让我知道是否有更好的方法来做这件事。

波姆。xml:

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet-core</artifactId>
        <version>2.8</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet</artifactId>
        <version>2.8</version>
    </dependency>
</dependencies>

网状物xml:

<servlet>
    <servlet-name>jersey-servlet</servlet-name>
    <servlet-class>
        org.glassfish.jersey.servlet.ServletContainer
    </servlet-class>
    <init-param>
        <param-name>jersey.config.servlet.provider.webapp</param-name>
        <param-value>true</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>jersey-servlet</servlet-name>
    <url-pattern>/rest/*</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("greeting")
public class Greeting {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String greeting(){
    return "Welcome!!";
}
}
蒙华翰
2023-03-14

我相信你错过了谷歌番石榴依赖罐失踪。尝试下载并将它们添加到类路径中。

端木野
2023-03-14

最后解决了。请检查下面的jar文件。使用这么多jar文件来实现REST服务是令人厌恶的。可能是Rest或轻松Rest比球衣更好。

hk2-api-2.2.0.jar
hk2-locator-2.2.0.jar
hk2-utils-2.2.0.jar
javassist-3.18.1-GA.jar
javax.annotation-api-1.2.jar
javax.inject-2.2.0.jar
javax.ws.rs-api-2.0.jar
jersey-client.jar
jersey-common.jar
jersey-container-servlet.jar
jersey-container-servlet-core.jar
jersey-guava-2.8.jar
jersey-server.jar,
validation-api-1.1.0.Final.jar

希望有人会觉得这有用。以上是已知的使用jersey 2.8版的情况

 类似资料:
  • 当我尝试在Linux服务器上的Tomcat上使用(“sudo服务tomcat7启动”)实现下面的方法时,除了这个方法之外,其他所有方法都可以正常工作。 奇怪的是,当我在Eclipse中“在服务器上运行”时,这个方法工作得很好。 以下是我收到的错误消息: HTTP状态500- 类型异常报告 消息 说明服务器遇到内部错误(),无法满足此请求。 例外 javax。servlet。ServletExcep

  • 无法在weblogic服务器上部署jersey REST,是否存在特定于weblogic的REST服务配置? 完全堆栈跟踪- 2018年4月25日下午7:01:53。太阳运动衫服务器impl。应用WebApplicationImpl启动信息:启动泽西岛应用程序,版本“泽西岛:1.2 05/07/2010 02:11 PM”2018年4月25日7:01:53 PM com。太阳运动衫服务器impl。

  • Update:原来您不需要任何技巧来实现这一点,只需相应地使用或即可。或者,您可以在中配置自己的别名,如下所述。

  • 我有一个正在运行的Web服务,它将被客户端移动应用程序使用。其中一项服务是返回一个JSON对象数组(超过1000个对象),每个对象都有相当大的大小。服务器端的整个计算需要一些时间,这不是一个好的用户体验。所以我希望以块的形式发送数据,例如每个块10个对象,这样这些数据就会占据屏幕,当他滚动时,或者当数据准备好时,屏幕上充满了从最新收到的块中新获取的数据。 我使用Jersey框架并发送一个Java<

  • 我正在创建一个API上传文件使用泽西。 } } 当我执行curl-v-X POST时——form file=@rt.txt url 我哪里做错了?

  • 尽管 Go 编译器产生的是本地可执行代码,这些代码仍旧运行在 Go 的 runtime(这部分的代码可以在 runtime 包中找到)当中。这个 runtime 类似 Java 和 .NET 语言所用到的虚拟机,它负责管理包括内存分配、垃圾回收(第 10.8 节)、栈处理、goroutine、channel、切片(slice)、map 和反射(reflection)等等。 runtime 主要由