Калитка на GlassFish v3

Я надеялся, что это будет проще, потому что я просто хочу сделать простой тестовый запуск с Wicket внутри EAR на GlassFish v3. Однако теперь, когда я добавил библиотеки Wicket через плагин netbeans в свой проект WAR

  • калитка-1.4.10.jar
  • калитки-расширения-1.4.10.jar
  • slf4j-апи-1.4.2.jar
  • slf4j-jdk14-1.4.2.jar

Я получаю эту ошибку запуска, когда пытаюсь запустить свое веб-приложение в GlassFish:

исключение

javax.servlet.ServletException: PWC1243: выполнение фильтра вызвало основную причину исключения

java.lang.NoClassDefFoundError: org/apache/velocity/app/Velocity

Нужна ли Wicket скорость как зависимость? Я проверил структуру проекта по умолчанию, созданную maven, и не нашел зависимости. Я также проверил учебник wicket + ejb, в котором также не упоминается скорость.

Теперь, когда я добавил скорость к своему пути к классам, я получаю эту ошибку:

http://jira.codehaus.org/browse/MSITE-286

Кажется, это проблема, решенная в 2008 году (конечно, я использовал последнюю версию).

Любые идеи о том, что я делаю неправильно?

заранее спасибо


person Stefan Ernst    schedule 28.11.2010    source источник


Ответы (1)


Wicket не требует скорости, хотя может взаимодействовать с ней через библиотеку wicket-velocity.jar.

Полная трассировка стека может помочь определить, что пытается загрузить, хотя диагностика проблем с запуском веб-приложения может быть сложной.

ИЗМЕНИТЬ:

Соответствующая часть трассировки стека кажется

java.lang.NoClassDefFoundError: org/apache/velocity/app/Velocity
        at org.apache.wicket.velocity.Initializer.init(Initializer.java:63)
        at org.apache.wicket.Application.callInitializers(Application.java:843)
        at org.apache.wicket.Application.initializeComponents(Application.java:678)
        at org.apache.wicket.protocol.http.WicketFilter.init(WicketFilter.java:725)

Таким образом, приложение калитки определенно пытается увеличить скорость загрузки, и мы не можем винить стеклянную рыбу. Я собираюсь переключиться на машину, на которой у меня есть исходный код калитки, и вернуться с возможно дополнительными идеями, но мне приходит в голову, что ваш файл web.xml также может содержать полезную информацию о конфигурации калитки.

Диагностика

Web.xml не проблема.

Проблема в том, что Application.callInitializers() загружает инициализаторы из всех файлов wicket.properties в пути к классам и пытается инициализировать связанные компоненты.

У вас есть wicket-velocity.jar в вашем пути к классам, хотя вы не используете скорость, и wicket пытается его инициализировать, поскольку он содержит файл wicket.properties, вызывающий вызов org.apache.wicket.velocity.Initializer.init() (который также находится в wicket-velocity.jar) . Этот метод пытается вызвать статический метод инициализации в Velocity, которого нет в пути к классам.

Если вы уберете файл wicket-velocity.jar из пути к классам, эта проблема исчезнет.

person Don Roby    schedule 28.11.2010
comment
Я копирую сгенерированное содержимое web.xml в файл web.xml внутри WAR: pastebin.com/fSuuUrzT - однако новый web.xml имеет версию 2.5, а не 2.4 - возможно, в этом есть проблема. - person Stefan Ernst; 28.11.2010
comment
Без проблем. Мне понравилось разбираться в этом, и это помогло мне лучше понять инициализацию калитки. Итак, ваш вопрос получил от меня положительный голос. - person Don Roby; 28.11.2010