在jboss6上使用maven部署JSP/Servlet项目时出错

发布于 2024-11-06 23:11:25 字数 2261 浏览 0 评论 0原文

Maven 依赖性问题。

大家好,

这是参考我之前的帖子 错误Jboss 在部署 jsp/servlet Web 应用程序“com.sun.faces.config.ConfigureListener”时出现错误

当我不通过 Maven 构建并将项目导出为战争(我使用 Eclipse for J2EE)并将其部署到 Jboss6 时通过它的管理控制台它运行良好,而如果我使用 mvn clean install 通过 maven 构建并将 maven 构建的 war 复制到我的 /deploy 目录(Jboss),我会收到以下错误

2011-05-10 14:41:57,509 INFO [ org.jboss.web.tomcat.service.deployers.TomcatDeployment] (HDScanner) 部署,ctxPath=/UltimateSMS-1 2011-05-10 14:41:57,681 错误 [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/UltimateSMS-1]] (HDScanner) 配置类 com 的应用程序侦听器时出错。 sun.faces.config.ConfigureListener:java.lang.ClassNotFoundException:com.sun.faces.config.ConfigureListener 在 java.net.URLClassLoader$1.run(URLClassLoader.java:217) [:1.6.0_20] 在 java.security.AccessController.doPrivileged(本机方法)[:1.6.0_20] 在 java.net.URLClassLoader.findClass(URLClassLoader.java:205) [:1.6.0_20]

并且 war 的部署失败。

这是我的 pom 的一部分

    <dependency>
                    <groupId>javax.servlet</groupId>
                    <artifactId>servlet-api</artifactId>
                    <version>2.5</version>
                    <type>jar</type>
                    <scope>compile</scope>
            </dependency>
            <dependency>
                    <groupId>jboss</groupId>
                    <artifactId>jboss-j2ee</artifactId>
                    <version>4.0.2</version>
                    <type>jar</type>
                    <scope>compile</scope>
            </dependency>
    <dependency>
                    <groupId>javax</groupId>
                    <artifactId>javaee-web-api</artifactId>
                    <version>6.0</version>
            </dependency>

没有在我的 web.xml 中配置了 faces 侦听器,并且它没有对 JSF 的任何引用

P.S:我的项目是一个简单的 JSP/Servlet J2EE 项目,没有对 JSF 的引用 我使用 JDK 1.6 和 Maven -> Apache Maven 3.0.3
我已经缩小了错误范围,我认为问题出在我的 pom.xml 中,

请建议。 谢谢

Problem with Maven Dependency.

Hello All,

This is in reference to my earlier post
Error with Jboss while deploying a jsp/servlet web app "com.sun.faces.config.ConfigureListener" Error

When i dont build via maven and export the project as a war ( I use Eclipse for J2EE ) and deploy it to Jboss6 via its admin console it runs fine, whereas if i build via maven using mvn clean install and copy the war built by maven to my /deploy directory (Jboss) i get the following error

2011-05-10 14:41:57,509 INFO [org.jboss.web.tomcat.service.deployers.TomcatDeployment] (HDScanner) deploy, ctxPath=/UltimateSMS-1
2011-05-10 14:41:57,681 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/UltimateSMS-1]] (HDScanner) Error configuring application listener of class com.sun.faces.config.ConfigureListener: java.lang.ClassNotFoundException: com.sun.faces.config.ConfigureListener
at java.net.URLClassLoader$1.run(URLClassLoader.java:217) [:1.6.0_20]
at java.security.AccessController.doPrivileged(Native Method) [:1.6.0_20]
at java.net.URLClassLoader.findClass(URLClassLoader.java:205) [:1.6.0_20]

And the deployment of war fails.

Heres a section of my pom

    <dependency>
                    <groupId>javax.servlet</groupId>
                    <artifactId>servlet-api</artifactId>
                    <version>2.5</version>
                    <type>jar</type>
                    <scope>compile</scope>
            </dependency>
            <dependency>
                    <groupId>jboss</groupId>
                    <artifactId>jboss-j2ee</artifactId>
                    <version>4.0.2</version>
                    <type>jar</type>
                    <scope>compile</scope>
            </dependency>
    <dependency>
                    <groupId>javax</groupId>
                    <artifactId>javaee-web-api</artifactId>
                    <version>6.0</version>
            </dependency>

No where in my web.xml have a configured a faces listener and it doesnot have any references to JSF

P.S: My project is a simple JSP/Servlet J2EE project with no references to JSF what so ever
I use JDK 1.6 and Maven -> Apache Maven 3.0.3
I have narrowed down the error and i think the problem is in my pom.xml

Please Advise.
Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

囍笑 2024-11-13 23:11:25

我也遇到过同样的问题。您应该将 pom.xml 中的 :

    <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
                <version>2.5</version>
                <type>jar</type>
                <scope>compile</scope>
    </dependency>

和 :

    <dependency>
                <groupId>javax</groupId>
                <artifactId>javaee-web-api</artifactId>
                <version>6.0</version>
    </dependency>

替换为 :

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-web-api</artifactId>
        <version>6.0</version>
        <scope>provided</scope>
    </dependency>

根据 maven doc 您应该将 Servlet API 和相关 Java EE API 的依赖关系设置为 provided 范围,因为 Web 容器提供了这些类。

提供
这很像编译,但表明您期望 JDK 或容器在运行时提供依赖项。例如,在为 Java Enterprise Edition 构建 Web 应用程序时,您可以将 Servlet API 和相关 Java EE API 的依赖关系设置为提供的范围,因为 Web 容器提供了这些类。此作用域仅在编译和测试类路径上可用,并且不可传递。

I've experienced the same problem. You should replace in pom.xml :

    <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
                <version>2.5</version>
                <type>jar</type>
                <scope>compile</scope>
    </dependency>

and :

    <dependency>
                <groupId>javax</groupId>
                <artifactId>javaee-web-api</artifactId>
                <version>6.0</version>
    </dependency>

by :

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-web-api</artifactId>
        <version>6.0</version>
        <scope>provided</scope>
    </dependency>

According to maven doc you should set the dependency on the Servlet API and related Java EE APIs to scope provided because the web container provides those classes.

provided
This is much like compile, but indicates you expect the JDK or a container to provide the dependency at runtime. For example, when building a web application for the Java Enterprise Edition, you would set the dependency on the Servlet API and related Java EE APIs to scope provided because the web container provides those classes. This scope is only available on the compilation and test classpath, and is not transitive.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文