ClassNotFoundException: ContextLoaderListener, при использовании Intellij с плагином maven tomcat8 и PostResources - PullRequest
0 голосов
/ 21 апреля 2020

Я использую Intellij с плагином maven tomcat8. Я добавил PostResource в свой контекстный файл:

    <Resources className="org.apache.catalina.webresources.StandardRoot">
     <PostResources base="{my_post_resources_path}}"
      className="org.apache.catalina.webresources.JarResourceSet"
      internalPath="/post-resources"
      webAppMount="/WEB-INF/classes/post-resources"/>
    </Resources>

, и он поднялся, без проблем. Когда я делаю mvn tomcat8: запустить из командной строки, он работает просто отлично. Но когда я запускаю его изнутри Intellij, из боковой панели Maven, щелкнув правой кнопкой мыши плагин tomcat8, затем tomcat8: run, я получаю эту ошибку:

    SEVERE: Error configuring application listener of class 
    org.springframework.web.context.ContextLoaderListener
    java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

    SEVERE: Error configuring application listener of class 
    org.springframework.web.context.request.RequestContextListener
    java.lang.ClassNotFoundException: org.springframework.web.context.request.RequestContextListener

Я понимаю, что оба эти класса найденный в spring-web, который у меня есть как зависимость в моем pom:

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>4.3.26.RELEASE</version>
    </dependency>

Я подтвердил, что в каталоге target / war / WEB-INF / lib моего проекта, spring-web jar есть. Я видел много сообщений о том, как заставить это работать с Eclipse, добавляя jar-файлы в развертывание вручную И я видел, что вы можете сделать что-то подобное в Intellij, в File -> Project project -> Artifacts, но не можете увидеть, куда добавить зависимости, и я не думаю, что это сработает в любом случае. В одном посте кто-то сказал, что в качестве зависимости я добавлю Spring-context-support, что я и сделал. Тот же результат.

Я много раз закрывал и отвечал на Intellij, запускаю и перезапускаю mvn clean install ... ничто не заставит tomcat правильно запуститься из Intellij. Любые идеи?

ОБНОВЛЕНИЕ: Я обнаружил, что это также происходит при запуске из командной строки, так что это не Intellij вещь. Похоже, это связано с тем, что я использую web. xml вместо Java config. Насколько я понимаю, это должно работать с сетью. xml.

В моей сети. xml Я определил:

    <listener>
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <listener>
      <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
    </listener>

Если я их закомментирую, ошибка исчезнет. Но, конечно, тогда приложение не запускается, потому что там нет ContextLoaderListener. (

1 Ответ

0 голосов
/ 24 апреля 2020

Проблема была в настройке подключаемого модуля tomcat8-maven, мне не хватало warSourceDirectory.

    <configuration>
      <port>8080</port>
      <path>/myapp</path>
      <addContextWarDependencies>true</addContextWarDependencies>
      <contextFile>${project.build.outputDirectory}/myapp.xml</contextFile>
      <warSourceDirectory>${project.build.directory}/${project.build.finalName}</warSourceDirectory>
    </configuration>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...