Как избежать NullPointerException в WebappClassLoader.findResources? - PullRequest
4 голосов
/ 20 сентября 2011

При повторном развертывании определенного веб-приложения с помощью приложения manager, следующий вызов вызывает 'NullPointerException' из-за WebappClassLoader.findResources (Stacktrace ниже). После перезапуска кота приложение будет работать нормально.

По всей сети проблема кажется очень распространенной, но без конкретного решения. Для меня это вызвано только при развертывании одного конкретного веб-приложения. Для некоторых списков рассылки это может быть jar (например, axis.jar), который включен в shared / libs /, но не должен быть в / WEB-INF / libs /

Для создания и развертывания веб-приложения я использую maven, и он отлично работает для всех других приложений, кроме этого. Нет никаких отличий в конфигурации проекта этого и других проектов.

Могу ли я кое-что сделать, чтобы найти причину, по которой кот "падает" ?! У кого-нибудь есть идеи по решению этой проблемы?!

java.lang.NullPointerException
    at org.apache.catalina.loader.WebappClassLoader.findResources(WebappClassLoader.java:1245)
    at java.lang.ClassLoader.getResources(ClassLoader.java:1041)
    at org.apache.commons.discovery.jdk.JDK12Hooks.getResources(JDK12Hooks.java:150)
    at org.apache.commons.discovery.resource.DiscoverResources$1.getNextResources(DiscoverResources.java:153)
    at org.apache.commons.discovery.resource.DiscoverResources$1.getNextResource(DiscoverResources.java:129)
    at org.apache.commons.discovery.resource.DiscoverResources$1.hasNext(DiscoverResources.java:116)
    at org.apache.commons.discovery.resource.names.DiscoverNamesInFile$1.getNextClassNames(DiscoverNamesInFile.java:186)
    at org.apache.commons.discovery.resource.names.DiscoverNamesInFile$1.getNextClassName(DiscoverNamesInFile.java:170)
    at org.apache.commons.discovery.resource.names.DiscoverNamesInFile$1.hasNext(DiscoverNamesInFile.java:157)
    at org.apache.commons.discovery.resource.names.NameDiscoverers$1.getNextIterator(NameDiscoverers.java:143)
    at org.apache.commons.discovery.resource.names.NameDiscoverers$1.hasNext(NameDiscoverers.java:126)
    at org.apache.commons.discovery.resource.classes.ResourceClassDiscoverImpl$1.getNextResource(ResourceClassDiscoverImpl.java:159)
    at org.apache.commons.discovery.resource.classes.ResourceClassDiscoverImpl$1.hasNext(ResourceClassDiscoverImpl.java:147)
    at org.apache.axis.configuration.EngineConfigurationFactoryFinder$1.run(EngineConfigurationFactoryFinder.java:120)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.apache.axis.configuration.EngineConfigurationFactoryFinder.newFactory(EngineConfigurationFactoryFinder.java:113)
    at org.apache.axis.configuration.EngineConfigurationFactoryFinder.newFactory(EngineConfigurationFactoryFinder.java:160)
    at org.apache.axis.client.Service.getEngineConfiguration(Service.java:813)
    at org.apache.axis.client.Service.getAxisClient(Service.java:104)
    at org.apache.axis.client.Service.<init>(Service.java:113)

Ответы [ 2 ]

4 голосов
/ 21 сентября 2011

Я видел эту проблему, возникающую при включении commons-discovery.jar в папку Tomcat / lib.

Если вы используете commons-discovery.jar для конкретной цели проекта, поместите его в папку WEB-INF / lib вашего проекта, а не в папку Tomcat / lib, это должно решить вашу проблему.

Это проблема развертывания, а не проблема Tomcat.

0 голосов
/ 05 марта 2013

Это случилось со мной сегодня, и это было из-за отсутствия saaj.jar в WEB-INF / lib.

...