在类文件javax / faces / webapp / FacesServlet中的非本机或抽象方法中的Absent Code属性

时间:2015-02-26 10:41:08

标签: java maven jsf tomcat

我正在构建一个使用JSF的PoC,并使用Tomcat 7.0.59作为我的服务器。我的pom.xml看起来像是:

<repositories>
        <repository>
            <id>Java.Net</id>
            <url>http://download.java.net/maven/2/</url>
        </repository>
    </repositories>
    <dependencies>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>6.0</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>javax.faces</groupId>
            <artifactId>jsf-api</artifactId>
            <version>2.1</version>
        </dependency>
        <dependency>
            <groupId>com.sun.faces</groupId>
            <artifactId>jsf-impl</artifactId>
            <version>2.1.7</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.0.1</version>
        </dependency>
    </dependencies>

我查找了错误并发现它是由javaee-api引起的,但看起来甚至在添加了特定的依赖项之后问题仍无法解决。有一个不同的线程,但它在不同的服务器上,如glassfish,jboss,似乎不适用于我的情况。

编辑:在Samuel和Tiny的建议之后,我已经达到了这个pom.xml:

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>javax.faces</groupId>
        <artifactId>jsf-api</artifactId>
        <version>2.1</version>
    </dependency>
    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-impl</artifactId>
        <version>2.1.7</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.0</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

maven依赖树看起来像:

 com.Sourabh:SourabhTest:war:0.1
[INFO] +- junit:junit:jar:3.8.1:test
[INFO] +- javax.faces:jsf-api:jar:2.1:compile
[INFO] \- com.sun.faces:jsf-impl:jar:2.1.7:compile

1 个答案:

答案 0 :(得分:0)

Servlet-api必须用<scope>provided</scope>标记,作为tomcat提供的jar。如果你不这样做,你可能会遇到类加载器问题。

为确保您没有多次使用相同的依赖项(通过传递dep。),您可以运行mvn dependency:tree或进入eclipse中的依赖关系层次结构插件