首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从RESTEasy方法调用mongo-jackson映射器时出错

从RESTEasy方法调用mongo-jackson映射器时出错
EN

Stack Overflow用户
提问于 2012-10-04 15:10:47
回答 1查看 465关注 0票数 0

我已经研究这个问题好几天了。我有一个用maven构建的java servlet,它将被部署到Jetty (一个旧版本)。这是一个Jetty上的RESTful web服务,使用RESTEasy和Jackson构建,并使用Jackson Mongo Mapper将我连接到MongoDB。

我可以很好地从maven/jetty运行应用程序(使用mvn jetty: run ),对于不使用Jackson Mongo Mapper/Jackson bit的查询,它会像预期的那样返回JSON。然而,当我发送一个触发Jackson和映射器的请求时,我首先得到这个错误:

代码语言:javascript
复制
java.lang.NoClassDefFoundError: org/codehaus/jackson/map/deser/std/StdDeserializer

当我第二次提交(以及所有后续请求)时,我收到以下错误:

代码语言:javascript
复制
java.lang.NoClassDefFoundError: Could not initialize class net.vz.mongodb.jackson.JacksonDBCollection

据我所知,我几乎已经正确地设置了所有依赖项,尽管我将在问题的末尾包括我的web.xml和pom.xml。如果它不是依赖项,我就会想到我的bean (BillItem.class)是如何传递的,可能有一些问题。我是Java的新手,所以这很可能是一个愚蠢的错误,而不是与我正在尝试的特定堆栈相关的东西,我正在尝试implement...any正在发生的事情的想法?

这是我的web.xml:

代码语言:javascript
复制
    <?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"
    version="2.5">

   <welcome-file-list>
    <welcome-file>index.html</welcome-file>
   </welcome-file-list>

   <!--  
    <context-param>
        <param-name>resteasy.scan</param-name>
        <param-value>true</param-value>     
    </context-param> -->

   <context-param>
        <param-name>resteasy.resources</param-name>
        <param-value>com.myproject.BillServer</param-value>
   </context-param>

   <context-param>
      <param-name>javax.ws.rs.Application</param-name>
      <param-value>com.myproject.Service</param-value>
   </context-param>

    <context-param>
      <param-name>resteasy.resource.method-interceptors</param-name>
      <param-value>org.jboss.resteasy.core.ResourceMethodSecurityInterceptor</param-value>
   </context-param>

   <listener>
      <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
   </listener>

    <servlet>     
      <servlet-name>Resteasy</servlet-name>
      <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
      <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
      <servlet-name>Resteasy</servlet-name>
      <url-pattern>/*</url-pattern>
   </servlet-mapping>

</web-app>

这是我的pom.xml:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.myproject</groupId>
    <version>0.0.1-SNAPSHOT</version>
    <name>MyProject</name>
    <artifactId>MyProject</artifactId>
    <packaging>jar</packaging>

    <properties>
        <java.version>1.6</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>


    <dependencies>
        <!-- Servlet API -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
        </dependency>

        <!-- Jetty -->
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-webapp</artifactId>
            <version>8.1.7.v20120910</version>
        </dependency>
        <dependency>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>jsp-2.1-glassfish</artifactId>
            <version>2.1.v20100127</version>
        </dependency>   

        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jackson-provider</artifactId>
            <version>2.3.4.Final</version>
        </dependency>

        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jaxrs</artifactId>
            <version>2.3.4.Final</version>    
        </dependency>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>jaxrs-api</artifactId>
            <version>2.3.4.Final</version>
          </dependency>
          <dependency>
              <groupId>org.codehaus.jackson</groupId>
              <artifactId>jackson-core-asl</artifactId>
              <version>1.9.9</version>
          </dependency>
          <dependency>
              <groupId>net.vz.mongodb.jackson</groupId>
              <artifactId>mongo-jackson-mapper</artifactId>
              <version>1.4.2</version>
          </dependency>       
          <dependency>
              <groupId>org.mongodb</groupId>
              <artifactId>mongo-java-driver</artifactId>
              <version>2.9.1</version>
          </dependency>
    </dependencies>

    <build>
        <plugins>

            <plugin>
                    <groupId>org.mortbay.jetty</groupId>
                    <artifactId>jetty-maven-plugin</artifactId>
                </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                </configuration>
            </plugin>

            <!-- The maven app assembler plugin will generate a script that sets up the classpath and runs your project -->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>appassembler-maven-plugin</artifactId>
                <version>1.1.1</version>
                <configuration>
                    <assembleDirectory>target</assembleDirectory> 
                    <programs>
                        <program>
                            <mainClass>com.MyProject.Main</mainClass>
                            <name>webapp</name>
                        </program>
                    </programs>
                    <useAllProjectDependencies>true</useAllProjectDependencies>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>assemble</goal>
                        </goals>
                    </execution>                
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

下面的最后一行是抛出错误的令人不快的调用:

代码语言:javascript
复制
        Mongo mongo = new Mongo(MONGO_PATH, MONGO_PORT);
        DB db = mongo.getDB(MONGO_APPDB);
        DBCollection collection = db.getCollection(MONGO_BILL_COL);
        JacksonDBCollection<BillItem, String> coll = JacksonDBCollection.wrap(collection, BillItem.class, String.class);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-05 13:45:24

这是一件很愚蠢的事。当我清理我的pom文件时,我不小心删除了3个jackson依赖项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12722015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档