找到所需类javax.faces.FactoryFinder的多个版本

时间:2010-12-26 09:24:35

标签: java eclipse jsf jsf-2

我开始使用JSF2.0。 我按照教程没有问题,一切正常!我用过Eclipse Helios。 但我发现了一些我无法理解的东西。 该教程说要为JSF 2添加Project Facet。 我没有这样做,一切都运转正常。所以要完全遵循教程:

右键单击Project - >属性 - >项目方面

并没有勾选JavaServer Faces facet复选框。我认为这是Project Facet教程的含义。我点击它和

需要进一步配置

链接出现了。我按照指向JSF功能(修改分面项目)对话框的链接,我选择了用户库,我的JSF库(MyFaces)但我得到了错误消息:

  

找到所需类javax.faces.FactoryFinder的多个版本。

这是什么错误?创建项目后,我无法添加项目构面吗? 我需要什么项目方面? 我的(琐碎的)代码表明JSF工作正常,那么Facet对项目有用的是什么?

3 个答案:

答案 0 :(得分:3)

来自Eclipse help

  

方面定义特征和   Java EE项目的要求和   用作运行时的一部分   配置。

     

向项目添加构面时,   该项目配置为执行   某项任务,确定无疑   要求,或有一定的   特点。例如,EAR   facet设置一个项目来充当   通过添加一个企业应用程序   部署描述符和设置   项目的类路径。

如果是JSF facet

  

可以使用以下功能   安装JSF方面时:

     
      
  • JSF库配置支持
  •   
  • 应用程序配置管理
  •   
  • 大多数JSF的JSP源页面语义验证和内容辅助   核心和JSF HTML标记库   使用Expression的属性值   语言(EL)与否。
  •   
  • “在服务器上运行”对JSF JSP页面的支持
  •   

如果出现此错误:

  

找到所需类javax.faces.FactoryFinder的多个版本。

看起来工具已在项目类路径中检测到核心JSF API的多个副本。 JSF对此有一定的容忍度,并且历史上支持在不同的类加载器上下文中运行不同的版本 - 也就是说,您可以将一个放在WAR中,一个放在容器中。使用“打开类型”对话框( CTRL + SHIFT + T )并搜索javax.faces.FactoryFinder应该可以帮助您找到罪魁祸首jar。

答案 1 :(得分:2)

将JSF nature / facet添加到项目中会增加代码完成等功能,将jsf可视化组件添加到您的网页编辑器等项目中。检查你的构建补丁,看看有多少jsf api jar。我假设这个错误是在IDE中,而不是在正在运行的应用程序中。

答案 2 :(得分:0)

JSF facet帮助您使用JSF库对项目进行属性配置。它还支持JSF Tools项目中的一系列JSF特定验证和工具。虽然可以在不使用JSF工具的情况下开发JSF应用程序,但如果使用这些工具,可以提高工作效率。

如果您有兴趣在教程中尝试使用JSF工具,请首先使用JSF facet创建一个新的Web项目。然后跳过教程中有关配置库或创建描述符的部分。