如何在JBoss部署中修复javax.servlet类的ClassNotFoundException?

时间:2017-12-12 12:24:22

标签: java maven jboss classnotfoundexception

我之前已经问过这个问题,但我有一个特殊情况似乎不属于其他答案。

我已经有两个网络应用程序按预期打包并部署到我的JBoss EAP 7.x上。然而,我的第三次尝试是行不通的。以下是与其他两个不同的地方:

  1. 它最初是作为标准的maven原型创建的,而不是web应用程序原型(jar pancaking not war)。它只是一个自动更新工具,可以对数据进行预定更新。它并不意味着托管任何页面,但我需要将其编码为Web应用程序,因为考虑到我目前的知识和编码技能,它似乎是部署到Web应用程序服务器的最简单方法。我使用项目属性中的Project Facets选项卡对其进行了转换。
  2. web.xml不包含任何servlet,但它包含一个ServletContextListener,它启动更新循环。
  3. 当我尝试部署war文件时,出现以下错误:

    Cannot upload deployment: {"WFLYCTL0080: Failed services" => 
    {"jboss.undertow.deployment.default-server.default-host./auto-update-
    tool.UndertowDeploymentInfoService" => "org.jboss.msc.service.StartException
    in service jboss.undertow.deployment.default-server.default-host./auto-
    update-tool.UndertowDeploymentInfoService: java.lang.ClassNotFoundException:
    servlet.ServletContextListener from [Module \"deployment.auto-update-
    tool.war:main\" from Service Module Loader] Caused by: 
    java.lang.ClassNotFoundException: servlet.ServletContextListener from 
    [Module \"deployment.auto-update-tool.war:main\" from Service Module 
    Loader]"}}
    

    这些消息对我来说并不陌生,但这次我正在努力解决它。

    基础知识第一:How do I import the javax.servlet API in my Eclipse project? 我已经遵循了这一点。我的pom文件中确实有JavaEE依赖项。这适用于我的所有三个项目。他们都提供了范围:

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

    如果我完全删除了这个,我在maven命令行中收到包装错误。如果我只删除提供的范围行,我会得到另一个但类似的错误:

    Cannot upload deployment: {"WFLYCTL0080: Failed services" => 
    {"jboss.deployment.unit.\"auto-update-tool.war\".POST_MODULE" => 
    "org.jboss.msc.service.StartException in service 
    jboss.deployment.unit.\"auto-update-tool.war\".POST_MODULE: WFLYSRV0153:
    Failed to process phase POST_MODULE of deployment \"auto-update-tool.war\"
    Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException:
    java.lang.ClassNotFoundException: servlet.ServletContextListener from 
    [Module \"deployment.auto-update-tool.war:main\" from Service Module Loader]
    Caused by: java.lang.ClassNotFoundException: servlet.ServletContextListener 
    from [Module \"deployment.auto-update-tool.war:main\" from Service Module
    Loader]"}}
    

    我也尝试将我的javax依赖关系切换出来,我认为它与JBoss 7.x中实现的版本相同:

        <dependency>
            <groupId>org.jboss.spec.javax.servlet</groupId>
            <artifactId>jboss-servlet-api_3.1_spec</artifactId>
            <version>1.0.1.Final</version>
            <scope>provided</scope>
        </dependency>
    

    错误消息现在已经消失,但替换为简单的&#34;上传失败&#34;没有任何错误消息。我试着查看日志文件,但也没有。我仍然觉得奇怪的是,我的其他应用程序都与其他javax依赖项一起工作。

    我迷路了。关于如何从这里开始的任何建议?

0 个答案:

没有答案