Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/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
在Glassfish中部署JSF应用程序时出错_Jsf_Netbeans_Glassfish - Fatal编程技术网

在Glassfish中部署JSF应用程序时出错

在Glassfish中部署JSF应用程序时出错,jsf,netbeans,glassfish,Jsf,Netbeans,Glassfish,我曾经在Glassfish服务器上部署过JSF+Primefaces应用程序,没有任何问题。最近我升级了我的NetBeans版本。在那之后,我对大多数应用程序都没有任何问题。但当我尝试进行部署时,其中一个失败,错误消息如下: 部署期间出错:加载应用程序时出现异常: java.lang.IllegalStateException:ContainerBase.addChild:start: org.apache.catalina.LifecycleeException:java.lang.Runti

我曾经在Glassfish服务器上部署过JSF+Primefaces应用程序,没有任何问题。最近我升级了我的NetBeans版本。在那之后,我对大多数应用程序都没有任何问题。但当我尝试进行部署时,其中一个失败,错误消息如下:

部署期间出错:加载应用程序时出现异常: java.lang.IllegalStateException:ContainerBase.addChild:start: org.apache.catalina.LifecycleeException:java.lang.RuntimeException: com.sun.faces.config.ConfigurationException: java.util.concurrent.ExecutionException: com.sun.faces.config.ConfigurationException:无法分析文档 'jar:file:/opt/glassfish3/glassfish/domains/domain1/applications/[应用程序名称]/WEB-INF/lib/javax.faces.jar/META-INF/mojarra_ext.taglib.xml': 无效的有关详细信息,请参阅server.log

看起来项目一切正常(清理和构建良好),但错误不断出现。这就是我正在使用的环境:

  • NetBeans 7.3.1
  • JSF2.2(莫哈拉)
  • GlassFish开源版本3.1.1(构建12)
PS:当我尝试使用捆绑在NetBeans中的Glassfish 3进行部署时,出现以下错误:

严重:部署期间出错:类com.sun.faces.application.annotation.PersistenceUnit Scanner无法访问其superinterface com.sun.faces.application.annotation.Scanner

谢谢

无法分析文档“jar:file:/opt/glassfish3/glassfish/domains/domain1/applications/[应用程序名称]/WEB-INF/lib/javax.faces.jar!”/META-INF/mojarra_ext.taglib.xml

taglib文件的路径表明,您在其
/WEB-INF/lib
中附带了JSF2.2和webapp,而不是升级GlassFish本身。由于GlassFish3本身附带了一个JSF2.1实现,您需要指示它不要加载它,以避免版本冲突。你没有说你在做什么,所以我想这就是你问题的全部原因

Glassfish本身已经附带了JSF绑定,默认情况下,JSF绑定的类加载优先级高于webapp中绑定的类加载优先级。您基本上需要告诉Glassfish使用webapp捆绑的JSF

为了实现这一点,编辑
/WEB-INF/glassfish WEB.xml
,添加以下两行


如果文件不存在,请创建它,您可以找到一个示例xml文件。然后将上面的两行添加到
标记中

GlassFish随后将禁止加载自己的捆绑JSF,并依赖webapp捆绑JSF


或者,如果您对Glassfish拥有完全的管理控制权,您还可以将
javax.faces.jar
文件从JSF 2.2复制到
/Glassfish/modules
目录中,从而替换旧文件,为了将其从JSF 2.1升级到JSF 2.2,以便应用于所有Web应用程序。

AFAIK JSF 2.2应用程序部署在GlassFish v4上,不确定它们是否可以部署在GlassFish v3上。x@Luiggi:他们可以。Servlet 3.0是最低要求。GF3是Servlet 3.0.Luiggi Mendoza,@BalusC,谢谢你的回答。最后,我解决了将JSF降级到2.1.25的问题,因为我不需要JSF2.2中的任何新特性。通过您的回答,您间接地解决了我遇到的另一个问题,那就是JSF2.1在Glassfish 4中表现得非常糟糕—这些似乎是版本的部署问题。我还需要学习很多关于部署的知识。再次感谢!请原谅我使用了这个线程,我也有同样的问题@BalusC它应该在glassfish-web.xml中的什么位置?我不能让它工作