我试图用MyFaces覆盖玻璃鱼中的Mojarra。我已经将myfaces--在maven中插入了依赖项,并删除了RI依赖项-- jsf-api.jar和jsf-Im.jar。我还很好地要求Glassfish使用捆绑的JSF实现,如在glassfish-web.xml:中使用这些行的这里所示
<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)我还尝试过手动下载jars(myfaces-2.1.3.jar,myfaces-api-2.1.3.jar,myfaces-bundle-2.1.3.jar和一堆,并将它们放到应用程序的类路径中。同样的结果。
有什么想法吗?
更新:在通过maven添加依赖项(仅排除自己的jars)时,在WAR中发布WEB/lib的内容:
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发布于 2011-11-03 14:41:57
/WEB-INF/lib中JAR列表中的
把这个拿掉。不仅Glassfish已经附带了它(我不使用Maven,但据我所知,您应该将它标记为provided),而且它还包含Mojarra ( JSF引用实现)库,这反过来解释了您的问题。它与MyFaces库相冲突。
此外,Glassfish还附带了JPA和JSTL (1.2!),因此也将它们从构建中删除。
https://stackoverflow.com/questions/7993919
复制相似问题