简体   繁体   English

泽西岛+ App Engine项目启动错误

[英]Jersey + App Engine project launch error

Did a lot of search, but no luck. 进行了大量搜索,但没有运气。

I'm trying to make a 'hello world' app which integrates Jersey and Google App Engine. 我正在尝试制作一个集成了Jersey和Google App Engine的“ hello world”应用程序。 In Eclipse, I created a 'Web Application Project' and added Jersey JAR to the build path. 在Eclipse中,我创建了一个“ Web应用程序项目”,并将Jersey JAR添加到了构建路径。 Then I modified web.xml and it looks like this: 然后我修改了web.xml,它看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<web-app 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">
<servlet>
    <servlet-name>Jersey Web Application</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.example.myJersey</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Jersey Web Application</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

In the package 'com.example.myJersey' I have HelloWorldResource.java, here is an excerpt: 在包com.example.myJersey中,我有HelloWorldResource.java,这是节选:

// The Java class will be hosted at the URI path "/helloworld"
@Path("/helloworld")
public class HelloWorldResource {

    // The Java method will process HTTP GET requests
    @GET 
    // The Java method will produce content identified by the MIME Media
    // type "text/plain"
    @Produces("text/plain")
    public String getClichedMessage() {
        // Return some cliched textual content
        return "Hello World";
    }
}

When I click run, I get this error: 单击运行时,出现以下错误:

INFO: Successfully processed C:\Users\upelsin\wtf-rest\war\WEB-INF/web.xml
фев 02, 2012 5:05:16 PM com.google.apphosting.utils.jetty.JettyLogger warn
WARNING: failed Jersey Web Application: java.lang.IncompatibleClassChangeError: Implementing class
фев 02, 2012 5:05:16 PM com.google.apphosting.utils.jetty.JettyLogger warn
WARNING: failed com.google.appengine.tools.development.DevAppEngineWebAppContext@1aa58969{/,C:\Users\upelsin\wtf-rest\war}: java.lang.IncompatibleClassChangeError: Implementing class
фев 02, 2012 5:05:16 PM com.google.apphosting.utils.jetty.JettyLogger warn
WARNING: failed JettyContainerService$ApiProxyHandler@6d26b88a:  java.lang.IncompatibleClassChangeError: Implementing class
фев 02, 2012 5:05:16 PM com.google.apphosting.utils.jetty.JettyLogger warn
WARNING: Error starting handlers
java.lang.IncompatibleClassChangeError: Implementing class
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:176)
at java.lang.ClassLoader.loadClass(Unknown Source)
at com.sun.jersey.api.core.ScanningResourceConfig.init(ScanningResourceConfig.java:79)
at com.sun.jersey.api.core.servlet.WebAppResourceConfig.init(WebAppResourceConfig.java:102)
at com.sun.jersey.api.core.servlet.WebAppResourceConfig.<init>(WebAppResourceConfig.java:89)
at com.sun.jersey.api.core.servlet.WebAppResourceConfig.<init>(WebAppResourceConfig.java:74)
at com.sun.jersey.spi.container.servlet.WebComponent.getWebAppResourceConfig(WebComponent.java:672)
at com.sun.jersey.spi.container.servlet.ServletContainer.getDefaultResourceConfig(ServletContainer.java:414)
at com.sun.jersey.spi.container.servlet.ServletContainer.getDefaultResourceConfig(ServletContainer.java:581)
at com.sun.jersey.spi.container.servlet.WebServletConfig.getDefaultResourceConfig(WebServletConfig.java:87)
at com.sun.jersey.spi.container.servlet.WebComponent.createResourceConfig(WebComponent.java:703)
at com.sun.jersey.spi.container.servlet.WebComponent.createResourceConfig(WebComponent.java:678)
at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:203)
at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:373)
at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:556)

EDIT: Maybe there is a misconfiguration in web.xml. 编辑:也许在web.xml中有一个错误的配置。 Looks like Jetty doesn't like Jersey's servlet class. 看起来Jetty不喜欢Jersey的servlet类。

I would appreciate any kind of help. 我将不胜感激。

I recently put together a project template on GitHub combining Jersey and Guice for AppEngine. 我最近在GitHub上组合了Jersey和Guice for AppEngine的项目模板 It may help to compare with a running app. 与正在运行的应用程序进行比较可能会有所帮助。

Jersey requires Java 1.6. 泽西岛需要Java 1.6。 Is this what the Google App Engine runs on? 这是运行Google App Engine的东西吗? Maybe your Google App instance is configured to run on an earlier Java version. 也许您的Google App实例配置为在早期Java版本上运行。

Look at this: 看这个:

http://code.google.com/p/googleappengine/wiki/WillItPlayInJava http://code.google.com/p/googleappengine/wiki/WillItPlayInJava

Make sure that you run Jersey 1.5 and configure as required in the doc. 确保您运行Jersey 1.5并按文档中的要求进行配置。 Also, are you using other libraries? 另外,您还在使用其他库吗? Those may create a classloading conflict? 那些可能会造成类加载冲突?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM