Glassfish 3.1 + MyFaces - ClassFormatError - PullRequest
1 голос
/ 03 ноября 2011

Я пытаюсь переопределить Мохарру в Glassfish с помощью MyFaces.Я поместил зависимость myfaces-impl в maven и удалил зависимости RI - jsf-api.jar и jsf-impl.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)

Я также пытался загрузить jar-файлы MyFaces ( myfaces-2.1.3.jar , myfaces-api-2.1.3.jar , myfaces-bundle-2.1.3.jar и несколько библиотек apache commons) вручную и поместите их в путь к классу приложения.Тот же результат.

Есть идеи?

ОБНОВЛЕНИЕ: Публикация содержимого WEB-INF / lib в WAR при добавлении зависимости через maven (исключая только мои собственные 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 голосов
/ 03 ноября 2011

Из вашего списка JAR в /WEB-INF/lib:

  • JavaEE-апи-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
  • стандарт-1.1.2.jar
...