Glassfish 3.1 + MyFaces - ClassFormatError

时间:2011-11-03 11:13:25

标签: jsf glassfish myfaces

我试图用MyFaces覆盖Glassfish中的Mojarra。我在maven中放置了 myfaces-impl 依赖项并删除了RI依赖项 - jsf-api.jar jsf-impl.jar 。我还很好地使用Glassfish在here中使用 glassfish-web.xml 中的这些行来使用捆绑的JSF实现:

<glassfish-web-app error-url="">
    <context-root>/Grandis</context-root>
    <class-loader delegate="false" />
    <property name="useBundledJsf" value="true"/>
</glassfish-web-app>

但是,当我尝试部署应用程序时,出现以下错误:

java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/faces/webapp/FacesServlet
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at org.glassfish.web.loader.WebappClassLoader.findClass(WebappClassLoader.java:927)
    at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1486)

我也试过下载MyFaces jars( myfaces-2.1.3.jar myfaces-api-2.1.3.jar myfaces-bundle-2.1 .3.jar 和一堆apache commons库)手动并将它们放在应用程序的类路径中。结果相同。

有什么想法吗?

UPDATE:当我通过maven添加依赖关系时,在WAR内部发布WEB-INF / lib的内容(仅限我自己的jar):

commons-beanutils-1.8.3.jar
commons-codec-1.3.jar
commons-collections-3.2.jar
commons-digester-1.8.jar
commons-logging-1.1.1.jar
javaee-api-6.0.jar
jstl-1.1.2.jar
log4j-1.2.16.jar
myfaces-api-2.1.3.jar
myfaces-impl-2.1.3.jar
org.eclipse.persistence.antlr-2.0.0.jar
org.eclipse.persistence.asm-2.0.0.jar
org.eclipse.persistence.core-2.0.0.jar
org.eclipse.persistence.jpa-2.0.0.jar
prettyfaces-jsf2-3.3.0.jar
primefaces-3.0.M4-SNAPSHOT.jar
standard-1.1.2.jar
xpp3_min-1.1.4c.jar
xstream-1.3.1.jar

1 个答案:

答案 0 :(得分:0)

来自/WEB-INF/lib中的JAR列表:

  
      
  • 的JavaEE-API-6.0.jar
  •   

删除它。不仅Glassfish 已经附带它(我不做Maven,但从我读过的是你应该将它标记为provided),但这也包含Mojarra( JSF参考实现)库反过来解释了你的问题。它与MyFaces库相冲突。

此外,Glassfish 附带JPA和JSTL(1.2!),因此也要从构建中删除它们。

  
      
  • JS​​TL-1.1.2.jar
  •   
  • org.eclipse.persistence.antlr-2.0.0.jar
  •   
  • org.eclipse.persistence.asm-2.0.0.jar
  •   
  • org.eclipse.persistence.core-2.0.0.jar
  •   
  • org.eclipse.persistence.jpa-2.0.0.jar
  •   
  • 标准1.1.2.jar
  •