我的泽西服务应用程序显示Class not found异常。但我已经在我的pom文件中配置了这些依赖性

时间:2016-04-01 04:11:43

标签: web-services rest maven jersey

Here is my project structure

  

这样的错误: - java.lang.ClassNotFoundException:   com.sun.jersey.spi.container.servlet.ServletContainer at   org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)     在   org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)     在   org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:415)

当我将所有jar文件放在lib(WEB-INF / lib)文件夹下时,它会工作。但是我想要pom文件来解决这个问题。

1 个答案:

答案 0 :(得分:1)

这完全取决于您的配置。 pom.xml 和不完整的教程。如果您希望pom.xml为您解决此问题,则需要添加一些内容。

插件

首先要做的事情。小红十字和事实,您的项目配置为在Java 1.5下运行让我猜,你与你的deps有兼容性问题。特别是javax.ws.rs \ javax.ws.rs-api

要解决此问题,您可能希望maven通过maven-compiler-plugin

处理它
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.5.1</version>
    <inherited>true</inherited>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
    </configuration>
</plugin>

然后,你可能想要运行服务器&#34;在&#34;日食。您可以在此处使用tomcat7-maven-plugin

<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <port>8080</port>
        <path>/</path>
    </configuration>
</plugin>

要使用的最后一个插件是maven-war-plugin

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.6</version>
    <configuration>
        <failOnMissingWebXml>false</failOnMissingWebXml>
    </configuration>
</plugin>

泽西岛依赖

要从Jersey开始,您只需要配置一个dep:

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-bundle</artifactId>
    <version>1.19</version>
</dependency>

我需要说,有newer versions available,但您可能有理由使用1.19

现在,您的完整pom.xml应如下所示:

<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/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>sujith</groupId>
    <artifactId>jersey-sample</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <packaging>war</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.maven-compiler-plugin.version>3.5.1</project.maven-compiler-plugin.version>
        <project.tomcat7-maven-plugin.version>2.2</project.tomcat7-maven-plugin.version>
        <project.maven-war-plugin.version>2.6</project.maven-war-plugin.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-bundle</artifactId>
            <version>1.19</version>
        </dependency>
    </dependencies>

    <build>
        <finalName>${project.artifactId}-${project.version}</finalName>
        <outputDirectory>${project.artifactId}</outputDirectory>

        <plugins>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${project.maven-compiler-plugin.version}</version>
                <inherited>true</inherited>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>${project.tomcat7-maven-plugin.version}</version>
                <configuration>
                    <port>8080</port>
                    <path>/</path>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>${project.maven-war-plugin.version}</version>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>

        </plugins>

    </build>

</project>

在Eclipse中,您现在右键单击您的项目并选择 - &gt;运行方式/调试为 - &gt; Maven构建......

修改配置和lauch 菜单中,您现在可以添加目标:clean install tomcat7:run-war以及它。

您的服务器应该启动,资源可用于http://127.0.0.1:8080 / {web.xml\servlet-mapping\url-pattern} / {path-to-resource}

最后一件事。请先查看原始示例。大多数教程都有废话。最后,请阅读how to ask页。

度过愉快的一天。