Как управлять зависимостью от servlet-api? - PullRequest
1 голос
/ 04 января 2011

У нас есть модуль web maven, который скомпилирован для войны, и, следовательно, нет необходимости напрямую включать jar servlet-api. Для этого мы используем <scope>provided</scope>.

Проблема возникает, когда я пытаюсь написать небольшой main () для тестирования одного из моих классов. Это не модульный тест, а скорее сам код.

Сбой на java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest:

public static void main(String[] args) {
  final Injector injector = Guice.createInjector(new StandardModule());
  // StandardModule is our standard module, with bindings to 
  // something that rightfully depends on servlet API
  ...
}

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

Возможно, лучшее решение - переместить тестер в тестовый код.

Ответы [ 2 ]

3 голосов
/ 04 января 2011

Вы можете использовать <scope>test</scope>, если хотите использовать его для тестов. Однако provided отлично работает для меня в Eclipse - он добавляется в classpath.

1 голос
/ 04 января 2011

Если вы используете eclipse с m2eclipse, <scope>provided</scope> будет разрешен правильно, и ваш основной класс скомпилируется и будет работать правильно.

...