【问题标题】:Glassfish 3.1 + MyFaces - ClassFormatErrorGlassfish 3.1 + MyFaces - ClassFormatError
【发布时间】:2011-12-21 02:09:55
【问题描述】:

我正在尝试使用 MyFaces 覆盖 Glassfish 中的 Mojarra。我已将 myfaces-impl 依赖项放入 maven 并删除了 RI 依赖项 - jsf-api.jarjsf-impl.jar。我还很好地要求 Glassfish 使用捆绑的 JSF 实现,如 here 所示,在 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)

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

有什么想法吗?

更新:当我通过 maven 添加依赖项时,在 WAR 中发布 WEB-INF/lib 的内容(仅包括我自己的 jars):

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

【问题讨论】:

  • 请列出在 WAR 构建的 /WEB-INF/lib 中结束的 JAR。

标签: jsf glassfish myfaces


【解决方案1】:

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

  • javaee-api-6.0.jar

删除这个。不仅 Glassfish 已经 附带了它(我不做 Maven,但据我所知,你应该将它标记为 provided),而且它还包含 Mojarra(JSF 参考实施)库,这反过来又解释了你的问题。它与 MyFaces 库冲突。

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

  • jstl-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
  • standard-1.1.2.jar

【讨论】:

  • 谢谢!我承认,我确实知道 glassfish 提供了所有这些,但不认为它们与尝试删除它们的 JSF 相关。该应用程序已部署,尽管我在每次回发时都会收到 ViewExpired 异常,并且 PrettyFaces 无法将 url 参数注入到 bean 中,但我离目标更近了一步:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多