Сбой инкрементного развертывания Glassfish при включении Selenium

У меня есть проект Java EE, предназначенный для работы на Glassfish 4.1. Я хочу использовать Selenium для сбора информации с некоторых веб-страниц, т.е. мне нужно включить Selenium в развертывание (не только для тестов).

Я использую Eclipse IDE и ранее использовал функцию инкрементного развертывания в Eclipse для автоматического развертывания всех сохраненных изменений в проекте. Но когда я включил (с Maven), зависимости для инкрементного развертывания Selenium перестали работать. Проект по-прежнему можно развернуть в Glassfish, но мне приходится перезапускать Glassfish между каждым изменением. Я получаю следующую ошибку в Eclipse:

Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.RuntimeException: com.sun.faces.config.ConfigurationException: java.util.concurrent.ExecutionException: com.sun.faces.config.ConfigurationException: Unable to parse document 'bundle://136.0:1/com/sun/faces/jsf-ri-runtime.xml': DTD factory class org.apache.xerces.impl.dv.dtd.DTDDVFactoryImpl does not extend from DTDDVFactory.. Please see server.log for more details.

org.apache.xerces.impl.dv.dtd.DTDDVFactoryImpl включен в состав Selenium как транзитивная зависимость (xerces:xercesImpl:2.11.0).

Вот мои зависимости Maven:

<dependency>
  <groupId>org.jboss.arquillian.selenium</groupId>
  <artifactId>selenium-bom</artifactId>
  <version>2.44.0</version>
  <type>pom</type>
  <scope>import</scope>
</dependency>
<dependency>
  <groupId>org.seleniumhq.selenium</groupId>
  <artifactId>selenium-htmlunit-driver</artifactId>
</dependency>

Я надеюсь, что для этого есть решение, но после прочтения ответа Йенса Шаудера в Работа с Xerces ад в Java/Maven? Боюсь, что может и не быть. Кто-нибудь?


person user208370    schedule 08.01.2015    source источник


Ответы (1)


В настоящее время я не могу воспроизвести проблему с простым проектом. Убедились ли вы, что у вас нет других зависимостей, которые импортируют другую версию xercesImpl?

Вы можете попробовать поместить xercesImpl-2.11.0.jar и транзитивную зависимость xml-apis-1.4.01.jar в папку lib вашего домена Glassfish и исключить ее из ваших зависимостей следующим образом:

<dependency>
  <groupId>org.seleniumhq.selenium</groupId>
  <artifactId>selenium-htmlunit-driver</artifactId>
  <version>2.44.0</version>
  <exclusions>
    <exclusion>
        <artifactId>xercesImpl</artifactId>
        <groupId>xerces</groupId>
    </exclusion>
  </exclusions>
</dependency>  

См. также:

person unwichtich    schedule 08.01.2015