Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
找到所需类javax.faces.FactoryFinder的多个版本_Java_Eclipse_Jsf_Jsf 2 - Fatal编程技术网

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

找到所需类javax.faces.FactoryFinder的多个版本,java,eclipse,jsf,jsf-2,Java,Eclipse,Jsf,Jsf 2,我从JSF2.0开始。 我遵循一个没有问题的教程,一切都很好!我用日食太阳神。 但我注意到了一些我无法理解的事情。 教程说要为JSF2添加项目方面。 我没有做过这样的事情,一切都很顺利。所以为了完全遵循教程,我做了: 右键单击项目->属性->项目面 未勾选JavaServer Faces方面复选框。我假设这就是教程中项目方面的意思。我点击了一下,一个 需要进一步配置 链接出现了。我按照链接进入了一个JSF功能(修改刻面项目)对话框,我选择了用户库,我的JSF库(即MyFaces),但我得到了错误

我从JSF2.0开始。 我遵循一个没有问题的教程,一切都很好!我用日食太阳神。 但我注意到了一些我无法理解的事情。 教程说要为JSF2添加项目方面。 我没有做过这样的事情,一切都很顺利。所以为了完全遵循教程,我做了:

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

未勾选JavaServer Faces方面复选框。我假设这就是教程中项目方面的意思。我点击了一下,一个

需要进一步配置

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

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

这个错误是什么?我不能在创建项目后添加项目方面吗? 我需要项目方面做什么?
我的(琐碎的)代码表明JSF工作正常,那么项目方面有什么用处呢

将JSF特性/方面添加到项目中会为项目添加代码完成、将JSF可视化组件添加到网页编辑器等功能。检查您的构建补丁,看看有多少JSFAPIJAR。我假设此错误出现在IDE中,而不是正在运行的应用程序中。

来自:

面定义了特性和特性 JavaEE项目的需求和 作为运行时的一部分使用 配置

向项目中添加方面时, 该项目已配置为执行 一定的任务,完成一定的任务 要求,或者有一定的 特点。例如,耳朵 facet设置一个项目作为 通过添加 部署描述符和设置 项目的类路径

在下列情况下:

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

  • JSF库配置支持
  • 应用程序配置管理
  • 大多数JSF的JSP源页面语义验证和内容辅助 Core和JSF HTML标记库 使用表达式的属性值 语言(EL)与否
  • JSFJSP页面的“在服务器上运行”支持
如果出现此错误:

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


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

JSF方面可以帮助您使用JSF库对项目进行属性配置。它还支持JSF工具项目中的一系列特定于JSF的验证和工具。虽然不使用JSF工具开发JSF应用程序当然是可能的,但如果使用这些工具,您的工作效率会更高


如果您对在教程中试用JSF工具感兴趣,可以从使用JSF方面创建一个新的web项目开始。然后跳过教程中有关配置库或创建描述符的部分

在我的构建路径上是我的用户库,其中包含MyFaces的所有JAR。我可以通过web编辑器打开*.xhtml文件,并为这些文件获取各种标记。如果没有在ProjectFacets中勾选JSF,我看不出我遗漏了什么。以下以IDE为中心的教程的问题是,该教程针对的IDE版本与您现有的版本不同。您应该使用IDE不可知论者tutorial@Thorbjørn Ravn Andersen:教程使用Eclipse Helios,我也使用Eclipse Helios,您使用了什么教程?我在这里使用了一个,但是当它说要查找一个名为faces-config.xml的文件时,我被卡住了。我的项目中没有这样的文件,我也不知道在哪里创建它。@pringlesinn-faces-config.xml通常进入WAR的WEB-INF目录。如果您在细节上遇到困难,我建议您获取一份规范的副本:@pringlesinn:如果您使用的是JSF2.0,那么如果您使用注释,就不需要faces-config.xml。我还使用了Marty Hall教程,还有一个“可视化”faces-config.xml编辑器。这在JSF2.0中并不是很有用,因为几乎所有的事情都可以通过注释来完成:)通过ctrl+shift+T我发现
javax.faces.FactoryFinder
包含在my-faces-api.jar和my-faces-bundle.jar中。我删除了包,错误被解决了!完成后,我看到web.xml被修改成了额外的定义,并添加了一个faces-config.xml。所以我想我必须手动完成的额外工作是通过facet添加的。谢谢@BalusC:我看到faces-config.xml编辑器有某种设计器,它似乎以图形方式显示导航链接。这个功能有用吗?如果您使用注释,它也可用吗?是的。然而,我从未使用过它。我通常讨厌可视化编辑器,我喜欢自己在代码级别控制它。JSF方面为我提供的唯一优点是它将正确的JAR放在
WEB-INF/lib
中,并为我自动生成faces-config.xml:)我用JSF方面创建了一个项目,但在WEB-INF\lib下没有添加lib。我不得不手动添加它们。为什么会这样?有很多方法可以将JSF库添加到项目中,其中大多数都不涉及在源代码中将JAR物理地添加到WEB-INF/lib中。它们通常是远程引用的,并且只有在项目作为归档或发布文件导出时才打包到WEB-INF/lib中。