Java Maven-JSF2.0没有';不能在嵌入式tomcat上工作

Java Maven-JSF2.0没有';不能在嵌入式tomcat上工作,java,maven,jsf-2,plugins,embedded-tomcat-7,Java,Maven,Jsf 2,Plugins,Embedded Tomcat 7,我使用JSF2.2、Primefaces和Tomcat7依赖项创建了一个Maven Web应用程序 我的JSF实现是Mojarra 2.2.4,我在POM上添加了以下依赖项: <dependency> <groupId>com.sun.faces</groupId> <artifactId>jsf-api</artifactId> <version>2.2.4</

我使用JSF2.2、Primefaces和Tomcat7依赖项创建了一个Maven Web应用程序

我的JSF实现是Mojarra 2.2.4,我在POM上添加了以下依赖项:

    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-api</artifactId>
        <version>2.2.4</version>
        <scope>compile</scope>
    </dependency>

    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-impl</artifactId>
        <version>2.2.4</version>
        <scope>compile</scope>
    </dependency>

com.sun.faces

但是,尽管我无法识别
@ManagedBean
注释,但它只在
faces config.xml
上使用ManagedBean标记

有没有一种方法可以包含对Tomcat Embedded for
maven7 Tomcat插件的支持


PS:
tomcat7:run war运行正常,但我不喜欢,因为它显然是静态运行,不可能动态更改xhtml代码。

我决定按照以下步骤从Mojarra 2.2.4切换到MyFaces 2.2.0:

  • 删除我的POM中的Mojarra依赖项
  • 在我的POM中添加MyFaces从属项:

    <dependency>
        <groupId>org.apache.myfaces.core</groupId>
        <artifactId>myfaces-api</artifactId>
        <version>2.2.0</version>
        <scope>compile</scope>
    </dependency>
    
    <dependency>
        <groupId>org.apache.myfaces.core</groupId>
        <artifactId>myfaces-impl</artifactId>
        <version>2.2.0</version>
        <scope>compile</scope>
    </dependency>
    
    
    org.apache.myfaces.core
    
    !

    我不明白这个问题。JSF是与您的应用程序一起部署的,不是吗?是的,我在POM上有JSF依赖项,但问题是Maven Tomcat Embedded。它不能识别JSF2.X。事实上,如果我构建WAR并将其部署在外部Tomcat上,webapp就可以工作。顺便说一下,永久性的“目标不可访问,标识符[beanname]解析为null”的有趣原因。我以前见过关于这个问题的问题没有明显的原因。我想知道Maven+Embedded Tomcat到底在做什么。问题是由于插件的影响(它没有在WAR或目录中运行webapp),注释扫描算法无法正常运行。如果您使用的是MyFaces,请尝试设置org.apache.MyFaces.annotation.SCAN_PACKAGES param,以指示扫描所选包的算法。这是一个应放在web.xml上的参数。我不知道Mojarra背后的细节,但我想它存在一个类似的参数,但我不知道它是否会工作,因为我们很久以前就必须做一些特殊的事情使它工作,这与规范中提出的默认算法不同。我可以告诉你的是,在MyFaces中添加参数正是为了修复这些情况。切换到MyFaces很容易,会让你的生活更轻松。试试2.2.0工件。我知道你早就解决了这个问题,但是我发现了一个快速的解决方案,使用Jetty插件而不是Tomcat。
    <listener>
    <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
    
    <context-param>
         <description>Defines which packages to scan for beans, separated by commas.
             Useful for when using maven and jetty:run (version 6) or tomcat:run
        </description>
        <param-name>org.apache.myfaces.annotation.SCAN_PACKAGES</param-name>
        <param-value>eu.dedalus</param-value>