Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse java.lang.ClassNotFoundException:com.sun.jersey.spi.container.servlet.ServletContainer_Eclipse_Google App Engine_Jakarta Ee_Jersey_Jersey 2.0 - Fatal编程技术网

Eclipse java.lang.ClassNotFoundException:com.sun.jersey.spi.container.servlet.ServletContainer

Eclipse java.lang.ClassNotFoundException:com.sun.jersey.spi.container.servlet.ServletContainer,eclipse,google-app-engine,jakarta-ee,jersey,jersey-2.0,Eclipse,Google App Engine,Jakarta Ee,Jersey,Jersey 2.0,我正在尝试使用Jersey+Google应用程序引擎构建一个简单的hello world应用程序,为期两天。对于简单的AppEngine项目,我遵循了这些教程,两个都很好 但现在我尝试添加运动衫,并遵循本教程 但服务器一直给我 java.lang.ClassNotFoundException:com.sun.jersey.spi.container.servlet.ServletContainer 在web.xml中添加以下行时: 测试服务器 泽西岛休息服务 com.sun.jersey.s

我正在尝试使用Jersey+Google应用程序引擎构建一个简单的hello world应用程序,为期两天。对于简单的AppEngine项目,我遵循了这些教程,两个都很好

但现在我尝试添加运动衫,并遵循本教程

但服务器一直给我

java.lang.ClassNotFoundException:com.sun.jersey.spi.container.servlet.ServletContainer

在web.xml中添加以下行时:


测试服务器
泽西岛休息服务
com.sun.jersey.spi.container.servlet.ServletContainer
com.sun.jersey.config.property.packages
com.test.myproject
1.
泽西岛休息服务
/休息/*
我已经从下载了Jersey
JAX-RS2.1RI bundle
,并在
WEB-INF/lib
文件夹中添加了所有jar文件,如教程所述。即使过了两天,也没有任何效果。我在谷歌上搜索了好几次,显然使用Maven的人已经解决了这个问题,但我没有使用Maven,编写教程的人也没有


为了检查导入的
jersey jars
中是否存在
com.sun.jersey.spi.container.servlet.ServletContainer
,我尝试用Java编写这个完全限定的名称,让intellisense完成名称,但在
com.sun.je
之后我无法获得任何intellisense,因此我最后的猜测是有一些在最新的Jersey版本中重新排列包,并且
Jersey
不再位于
com.sun
内。我已经筋疲力尽了,我非常感谢任何帮助

您已经下载了Jersey 2(JAX-RS 2的哪个RI)。您所指的教程使用Jersey 1。从()下载Jersey 1.17.1就足够了

Jersey 1使用
com.sun.Jersey
,Jersey 2使用
org.glassfish.Jersey
,因此例外

还要注意,jersey 2也不会识别以
com.sun.jersey
开头的
init param

编辑 包含有关如何在Jersey 2中注册类/实例的其他信息

将此添加到pom中

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-server</artifactId>
    <version>1.17.1</version>
</dependency>
<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-core</artifactId>
    <version>1.17.1</version>
</dependency>
<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-servlet</artifactId>
    <version>1.17.1</version>
</dependency>

泽西岛
泽西服务器
1.17.1
泽西岛
球衣核心
1.17.1
泽西岛
泽西servlet
1.17.1

如果您使用的是jersey 2.x,那么您需要在web.xml中进行不同的配置,因为servlet类在其中发生了变化。您可以使用以下配置更新web.xml

    <servlet>
    <servlet-name>myrest</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>    
    <init-param>
      <param-name>jersey.config.server.provider.packages</param-name>
      <param-value>your.package.path</param-value>
    </init-param>
    <init-param>
     <param-name>unit:WidgetPU</param-name>
     <param-value>persistence/widget</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>myrest</servlet-name>
    <url-pattern>/rest/*</url-pattern>
  </servlet-mapping>

myrest
org.glassfish.jersey.servlet.ServletContainer
jersey.config.server.provider.packages
您的.package.path
单位:WidgetPU
持久性/小部件
1.
myrest
/休息/*
试试这个:

org.glassfish.jersey.servlet.ServletContainer


在servlet类上,我今天遇到了相同的错误,尽管我使用的是Jersey 1.x,并且在我的类路径中有正确的JAR。对于那些希望完全遵循vogella教程并使用1.xjars的人,您需要将jersey库添加到WEB-INF/lib文件夹中。这肯定会解决问题。

您需要将
jersey-bundle-1.17.1.jar
添加到项目的lib中


泽西岛休息服务
com.sun.jersey.spi.container.servlet.ServletContainer
com.sun.jersey.config.property.packages
包,包,测试
1.

尽管我遵循了不同的指南,但我遇到了与您相同的问题:

奇怪的是,在我使用的这本指南中,版本之间的兼容性(1.x和2.x)应该没有任何问题,因为按照指南,您在
pom.xml
上使用了jersey 1.8.x,在
web.xml
中您引用了一个类(
com.sun.jersey.spi.container.servlet.ServletContainer
)正如前面提到的1.x版本。所以我可以推断这应该是有效的

我猜是因为我使用的是JDK1.7,这个类已经不存在了


之后,我试图用我之前的答案解决问题,但没有帮助,我在
pom.xml
web.xml
上进行了更改,错误更改为:
java.lang.ClassNotFoundException:org.glassfish.jersey.servlet.ServletContainer

这应该是存在的

由于此错误,我找到了一个“新”解决方案:

使用Maven(原型),生成一个jersey项目,如下所示:

mvn archetype:generate -DarchetypeGroupId=org.glassfish.jersey.archetypes -DarchetypeArtifactId=jersey-quickstart-webapp -DarchetypeVersion=2.0

这对我很有效!:)

我也面临类似的问题。通过以下链接中的步骤教程解决了此问题

  • 需要注意的主要问题是jersey库应该正确地放置在TomcatWEB-INF/lib文件夹中。这是由上面链接中提到的Eclipse设置自动完成的。它将创建一个包含依赖JAR文件的WAR文件。否则,您将遇到ClassNotFoundException问题
apache-tomcat-7.0.56-windows-x64\apache -tomcat-7.0.56\webapps\JerseyJSONExample\WEB-INF\lib

“2014年11月23日12:06 AM 130458 jersey-client-1.9.jar

2014年11月23日12:06 AM 458739 jersey-core-1.9.jar

2014年11月23日12:06 AM 147952 jersey-json-1.9.jar

2014年11月23日12:06 AM 713089 jersey-server-1.9.jar“ 4个文件1450238字节

  • 第二个教程解释了如何创建一个生成和使用JSON输出的Web服务


这两个链接都很好地说明了如何工作,并节省了大量时间。

您必须在web.xml中替换:

<servlet>
    <servlet-name>Jersey REST Service</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.test.myproject</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

泽西岛休息服务
com.sun.jersey.spi.container.servlet.ServletContainer
com.sun.jersey.config.property.packages
com.test.myproject
1.
为此:

<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>com.test.myproject</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

泽西岛休息服务
org.glassfish.jersey.servlet.ServletCon
<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>com.test.myproject</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-server</artifactId>
    <version>2.X</version>
</dependency>
"java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer"
<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-core</artifactId>
    <version>1.8</version>
</dependency>
mvn archetype:generate -DarchetypeGroupId=org.glassfish.jersey.archetypes -DarchetypeArtifactId=jersey-quickstart-webapp -DarchetypeVersion=2.26