NoClassDefFoundError:TomEE启动时的javax/faces/component/UIViewAction [英] NoClassDefFoundError: javax/faces/component/UIViewAction on TomEE startup

查看:64
本文介绍了NoClassDefFoundError:TomEE启动时的javax/faces/component/UIViewAction的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将一个Web项目(在 WEB-INF/lib 中的所有JAR)迁移到一个Maven Web项目(在 pom.xml 中的所有JAR).

I'm trying to migrate a web project (all JARs in WEB-INF/lib) to a maven web project (all JARs in pom.xml).

该项目使用以下库:

  • JSF 2.2
  • PrimeFaces
  • BootsFaces
  • OmniFaces

它在TomEE上运行.

It runs on TomEE.

TomEE启动时出现以下错误:

The following error appears on TomEE startup:

NoClassDefFoundError:javax/faces/component/UIViewAction

NoClassDefFoundError: javax/faces/component/UIViewAction

但是TomSF在类路径上提供了JSF2库.

But JSF2 library is provided by TomEE on classpath.

这是我的 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>com.lb</groupId>
<artifactId>XXX</artifactId>
<version>0.0.1</version>
<packaging>war</packaging>
<name>XXX</name>
<description>Application XXX</description>

<url>http://XXX.fr</url>
<organization>
    <name>XXX</name>
    <url>http://XXX.fr</url>
</organization>
<inceptionYear>2016</inceptionYear>


<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <javase.version>1.7</javase.version>
    <javaee.version>7.0</javaee.version>
</properties>

<developers>
    <developer>
        <id>XXX</id>
        <name>YYY</name>
        <email>ZZZ@gmail.com</email>
    </developer>
</developers>

<build>
    <directory>${basedir}/target/${project.artifactId}-${project.version}</directory>
    <finalName>XXX</finalName>

    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.java</include>
            </includes>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
        </resource>
    </resources>

    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>${javase.version}</source>
                <target>${javase.version}</target>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                <webResources>
                    <resource>
                        <directory>${basedir}/src/main/webapp/WEB-INF</directory>
                        <filtering>true</filtering>
                        <targetPath>WEB-INF</targetPath>
                    </resource>
                    <resource>
                        <directory>${basedir}/src/main/resources</directory>
                        <filtering>true</filtering>
                        <targetPath>WEB-INF/resources</targetPath>
                    </resource>
                </webResources>
                <webXml>${basedir}/src/main/webapp/WEB-INF/web.xml</webXml>
                <warSourceDirectory>${basedir}/src/main/webapp</warSourceDirectory>
                <packagingExcludes>
                    **/*.java,
                </packagingExcludes>
            </configuration>
        </plugin>
    </plugins>
</build>
<dependencies>

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.6</version>
    </dependency>
    <dependency>
        <groupId>org.primefaces</groupId>
        <artifactId>primefaces</artifactId>
        <version>5.3</version>
    </dependency>
    <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.10</version>
    </dependency>

    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.4</version>
    </dependency>

    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.3.1</version>
    </dependency>
    <dependency>
        <groupId>org.primefaces.themes</groupId>
        <artifactId>bootstrap</artifactId>
        <version>1.0.10</version>
    </dependency>

    <dependency>
        <groupId>net.bootsfaces</groupId>
        <artifactId>bootsfaces</artifactId>
        <version>0.8.1</version>
    </dependency>
    <dependency>
        <groupId>org.omnifaces</groupId>
        <artifactId>omnifaces</artifactId>
        <version>2.2</version>
    </dependency>
</dependencies>
<repositories>
    <repository>
        <id>prime-repo</id>
        <name>PrimeFaces Maven Repository</name>
        <url>http://repository.primefaces.org</url>
        <layout>default</layout>
    </repository>
</repositories>

感谢您的帮助.

推荐答案

javax/faces/component/UIViewAction 是JSF 2.2以来的新增功能.因此,您根本就没有使用JSF 2.2.您最有可能仅使用JSF 2.1随附的TomEE 1.x.

The class javax/faces/component/UIViewAction is new since JSF 2.2. You're thus not using JSF 2.2 at all. You're most likely using only TomEE 1.x, which ships with JSF 2.1.

此问题由OmniFaces 2.2触发.它需要JSF 2.2.

This problem is triggered by OmniFaces 2.2. It requires JSF 2.2.

您有2个选择:

  1. 降级到OmniFaces 2.1.即使OmniFaces 2.x正式需要 JSF 2.2,OmniFaces 2.0和2.1版本也没有部署时间对JSF 2.2的依赖.OmniFaces 2.2版带有< o:viewAction> 标记,是第一个在部署期间需要JSF 2.2的版本.

  1. Downgrade to OmniFaces 2.1. Even though OmniFaces 2.x officially requires JSF 2.2, OmniFaces versions 2.0 and 2.1 do not have deploy time JSF 2.2 dependencies. OmniFaces version 2.2 was with <o:viewAction> tag the first version to require JSF 2.2 during deploy time.

升级到TomEE 7.x,这是第一个实现Java EE 7的版本,从而实现了固有的JSF 2.2.作为M1版本,当前仅可用.预计将在数月内最终发布.

Upgrade to TomEE 7.x, the first version to implement Java EE 7 and thus inherently JSF 2.2. It's currently only available as M1 release. Final release is expected within months.

这篇关于NoClassDefFoundError:TomEE启动时的javax/faces/component/UIViewAction的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆