Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.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
Java FacesException:表达式错误:在WEB-INF/libs中找不到命名对象:xxx/_Java_Maven_Jsf_Primefaces_Jsf 2.2 - Fatal编程技术网

Java FacesException:表达式错误:在WEB-INF/libs中找不到命名对象:xxx/

Java FacesException:表达式错误:在WEB-INF/libs中找不到命名对象:xxx/,java,maven,jsf,primefaces,jsf-2.2,Java,Maven,Jsf,Primefaces,Jsf 2.2,我有一个JSF2.2组件,在WAR项目中运行良好。 因此,类文件被放入文件夹WEB-INF/classes/com/test中 但是当这个类被打包成一个JAR文件(来自另一个Maven项目)并且位于WEB-INF/lib/example1.JAR文件夹中时,我会得到以下错误 Caused by: javax.faces.FacesException: Expression Error: Named Object: HtmlHelloWorld not found. at com.sun.

我有一个JSF2.2组件,在WAR项目中运行良好。 因此,类文件被放入文件夹WEB-INF/classes/com/test中

但是当这个类被打包成一个JAR文件(来自另一个Maven项目)并且位于WEB-INF/lib/example1.JAR文件夹中时,我会得到以下错误

Caused by: javax.faces.FacesException: Expression Error: Named Object: HtmlHelloWorld not found.
    at com.sun.faces.application.ApplicationImpl.createComponentApplyAnnotations(ApplicationImpl.java:1933)
    at com.sun.faces.application.ApplicationImpl.createComponent(ApplicationImpl.java:1168)
有谁能解释一下我为什么会这样,或者如何修复它

这是我的代码,我不认为它对问题有任何影响

@FacesComponent(value = "HtmlHelloWorld")
public class HtmlHelloWorld extends UIComponentBase {
    @Override
    public String getFamily() {
        return null;
    }

    @Override
    public void encodeAll(FacesContext context) throws IOException {
    }
}
我还应该添加一个位于JAR根目录中的“faces config.xml”。不过,这没什么区别

faces-config.xml

<?xml version='1.0' encoding='UTF-8'?>
<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
              version="2.0">

  <application>
    <resource-bundle>
      <base-name>i18n</base-name>
      <var>bundle</var>
    </resource-bundle>
    <locale-config>
      <default-locale>en</default-locale>
      <supported-locale>en</supported-locale>
      <supported-locale>fr</supported-locale>
      <supported-locale>de</supported-locale>
    </locale-config>
  </application>

</faces-config>

i18n
捆
EN
EN
fr
判定元件

META-INF文件夹中没有我的faces-config.xml

Project
| src
| | main
|   | java
|     | com.test.TestFacesComponent
|   | resources
|     | META-INF
|       | faces-config.xml
参考资料: 摘录

JavaServer Faces实现通过查找以下内容来查找一个或多个文件:

web应用程序的/web-INF/lib/目录和父类加载器中的任何JAR文件中名为/META-INF/faces-config.xml的资源。如果存在具有此名称的资源,则将其作为配置资源加载。这种方法对于包含一些组件和渲染器的打包库是实用的

上下文初始化参数javax.faces.application.CONFIG_FILES,用于指定web应用程序的多个配置文件的一个或多个(逗号分隔)路径。此方法最有可能用于企业级应用程序,这些应用程序将维护大型应用程序每个部分的文件的责任委托给不同的组

应用程序的/WEB-INF/目录中名为faces-config.xml的资源。这是大多数简单应用程序使其配置文件可用的方式