1

I recently upgraded from JSF 2.2 to JSF 2.3.6 for JBoss EAP 7.2. After making all the changes including pom.xml changes and annotation changes, when I deploy the WAR file into the server, my WAR deployment is getting failed with an error - Failed to link org/primefaces/application/resource/DynamicResourcesPhaseListener

My POM.XML file ->

    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <scope>provided</scope>
    </dependency>

     <dependency>
      <groupId>org.glassfish</groupId>
      <artifactId>javax.faces</artifactId>
      <version>2.3.6</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.faces</groupId>
      <artifactId>javax.faces-api</artifactId>
      <version>2.3</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.glassfish.web</groupId>
      <artifactId>el-impl</artifactId>
      <version>2.2</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <scope>provided</scope>
    </dependency>


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

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

    <dependency>
      <groupId>org.glassfish</groupId>
      <artifactId>javax.servlet</artifactId>
      <version>3.0</version>
    </dependency>


    <dependency>
      <groupId>javax.el</groupId>
      <artifactId>javax.el-api</artifactId>
      <version>3.0.0</version>
    </dependency>

    <dependency>
      <groupId>javax.validation</groupId>
      <artifactId>validation-api</artifactId>
      <version>2.0.1.Final</version>
      <scope>provided</scope>
    </dependency>


    <dependency>
      <groupId>javax.servlet.jsp.jstl</groupId>
      <artifactId>jstl-api</artifactId>
      <version>1.2</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>org.primefaces</groupId>
      <artifactId>primefaces</artifactId>
      <version>7.0</version>
    </dependency>

    <dependency>
      <groupId>org.primefaces.themes</groupId>
      <artifactId>afterwork</artifactId>
      <version>1.0.10</version>
    </dependency>

    <dependency>
      <groupId>org.primefaces.extensions</groupId>
      <artifactId>primefaces-extensions</artifactId>
      <version>7.0</version>
    </dependency>

    <dependency>
      <groupId>org.primefaces.extensions</groupId>
      <artifactId>resources-ckeditor</artifactId>
      <version>7.0</version>
    </dependency>

    <dependency>
      <groupId>org.jboss.spec</groupId>
      <artifactId>jboss-javaee-7.0</artifactId>
      <version>${version.jboss.spec.javaee.7.0}</version>
      <type>pom</type>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>javax.enterprise</groupId>
      <artifactId>cdi-api</artifactId>
      <version>2.0</version>
      <exclusions>
        <exclusion>
          <groupId>javax.el</groupId>
          <artifactId>javax.el-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>javax</groupId>
      <artifactId>javaee-api</artifactId>
      <version>8.0</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>javax.inject</groupId>
      <artifactId>javax.inject</artifactId>
      <version>1</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>javax.interceptor</groupId>
      <artifactId>javax.interceptor-api</artifactId>
      <version>1.2</version>
      <scope>provided</scope>
    </dependency>

My WEB-INF folder structure - WEB-INF

I am pretty sure it is because of some dependency/configuration issue. But I am not able to pinpoint to the correct RC.

EDIT - I Adding Stack trace

2020-04-17 20:15:35,857 WARN  [org.jboss.as.dependency.private] (MSC service thread 1-7) WFLYSRV0018: Deployment "deployment.myweb-web.war" is using a private module ("org.jboss.security.negotiation") which may be changed or removed in future versions without notice.
2020-04-17 20:15:35,907 WARN  [org.jboss.modules.define] (MSC service thread 1-4) Failed to define class org.primefaces.application.resource.DynamicResourcesPhaseListener in Module "deployment.ipmr-web.war" from Service Module Loader: java.lang.NoClassDefFoundError: Failed to link org/primefaces/application/resource/DynamicResourcesPhaseListener (Module "deployment.ipmr-web.war" from Service Module Loader): javax/faces/event/PhaseListener
                at java.lang.ClassLoader.defineClass1(Native Method)
                at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
                at java.lang.ClassLoader.defineClass(ClassLoader.java:839)
                at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:424)
                at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:519)
                at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:339)
                at org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:126)
                at org.jboss.modules.Module.loadModuleClass(Module.java:731)
                at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:247)
                at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:410)
                at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
                at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116)
                at org.jboss.as.jsf.deployment.JSFComponentProcessor.deploy(JSFComponentProcessor.java:105)
                at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:144)
                at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1738)
                at org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1700)
                at org.jboss.msc.service.ServiceControllerImpl$ControllerTask.run(ServiceControllerImpl.java:1558)
                at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
                at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1985)
                at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1487)
                at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1378)
                at java.lang.Thread.run(Thread.java:748)

2020-04-17 20:15:35,909 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-4) MSC000001: Failed to start service jboss.deployment.unit."myweb-web.war".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.unit."ipmr-web.war".POST_MODULE: WFLYSRV0153: Failed to process phase POST_MODULE of deployment "ipmr-web.war"
                at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:151)
                at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1738)
                at org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1700)
                at org.jboss.msc.service.ServiceControllerImpl$ControllerTask.run(ServiceControllerImpl.java:1558)
                at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
                at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1985)
                at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1487)
                at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1378)
                at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoClassDefFoundError: Failed to link org/primefaces/application/resource/DynamicResourcesPhaseListener (Module "deployment.myweb-web.war" from Service Module Loader): javax/faces/event/PhaseListener
                at java.lang.ClassLoader.defineClass1(Native Method)
                at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
                at java.lang.ClassLoader.defineClass(ClassLoader.java:839)
                at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:424)
                at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:519)
                at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:339)
                at org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:126)
                at org.jboss.modules.Module.loadModuleClass(Module.java:731)
                at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:247)
                at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:410)
                at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
                at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116)
                at org.jboss.as.jsf.deployment.JSFComponentProcessor.deploy(JSFComponentProcessor.java:105)
                at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:144)
                ... 8 more
user1734698
  • 157
  • 2
  • 2
  • 17
  • Off-topic: why not include https://mvnrepository.com/artifact/javax/javaee-api/8.0 as provided instead of all the individual api's?. On-topic: I'm almost 100% sure the error is surrounded by a stacktrace... Can you post it? – Kukeltje Apr 20 '20 at 06:53
  • Included Stacktrace. It just repeats the NoClassDefFoundError all over the stack trace – user1734698 Apr 20 '20 at 09:10
  • I don't see any stacktrace – Kukeltje Apr 20 '20 at 09:23
  • Its at the bottom of the post – user1734698 Apr 20 '20 at 09:57
  • 1
    As mentioned you should use EE8 BOM as EAP 7.2 is EE8. Also I see you have a few dependencies marked as not "provided" so its including them in your WEB-INF/lib. I would double check your WAR file and make sure NO JARS from javax. package are in your WEB-INF/lib as they are already provided by Jboss and may be causing you conflicts. – Melloware Apr 20 '20 at 11:57
  • I resolved this issue by removing scope provided in all the dependancies. Even though I know it is a bad practice to load up the WAR file with all the dependancies, I have put this as a temproary workaround. – user1734698 Apr 28 '20 at 04:35

0 Answers0