Невозможно найти Spring NamespaceHandler для пространства имен схемы XML [http://camel.apache.org/schema/spring] через eclipse

1

Я прочитал все другие сообщения SO об этой проблеме, но ни один из них не касается верблюда и applicationContext.xml. Я нахожусь на своем пути, поскольку я пытаюсь понять это уже более недели.

Проблема: я могу запустить приложение GWT через Tomcat 6 просто отлично. Но как только я попытаюсь выполнить его через Eclipse с помощью "Запустить как веб-приложение", я получаю этот вывод на консоль:

[WARN] Server class 'org.springframework.web.context.ContextLoaderListener' could not be found in the web app, but was found on the system classpath
   [WARN] Adding classpath entry 'file:/C:/company/m2/repo/org/springframework/spring-web/2.5.6/spring-web-2.5.6.jar' to the web app classpath for this session
[WARN] Server resource 'log4j.properties' could not be found in the web app, but was found on the system classpath
   [WARN] Adding classpath entry 'file:/C:/company/projects/svn/reco/services/portal/trunk/portal-trunk/portal-um/src/test/resources/' to the web app classpath for this session
[WARN] Server class 'com.company.session.PortalSessionListener' could not be found in the web app, but was found on the system classpath
   [WARN] Adding classpath entry 'file:/C:/company/m2/repo/serviceUtil/serviceUtil/trunk/serviceUtil-trunk.jar' to the web app classpath for this session
[WARN] Server class 'org.springframework.context.ApplicationContextException' could not be found in the web app, but was found on the system classpath
   [WARN] Adding classpath entry 'file:/C:/company/m2/repo/org/springframework/spring-context/2.5.6/spring-context-2.5.6.jar' to the web app classpath for this session
[WARN] Server class 'org.springframework.beans.FatalBeanException' could not be found in the web app, but was found on the system classpath
   [WARN] Adding classpath entry 'file:/C:/company/m2/repo/org/springframework/spring-beans/2.5.6/spring-beans-2.5.6.jar' to the web app classpath for this session
[WARN] Server class 'org.springframework.core.NestedRuntimeException' could not be found in the web app, but was found on the system classpath
   [WARN] Adding classpath entry 'file:/C:/company/m2/repo/org/springframework/spring-core/2.5.6/spring-core-2.5.6.jar' to the web app classpath for this session
[WARN] Server class 'org.apache.commons.collections.map.CaseInsensitiveMap' could not be found in the web app, but was found on the system classpath
   [WARN] Adding classpath entry 'file:/C:/company/m2/repo/com/google/gwt/gwt-dev/2.4.0/gwt-dev-2.4.0.jar' to the web app classpath for this session
Starting Jetty on port 8888
   [WARN] Failed startup of context com.google.gwt.dev.shell.jetty.JettyLauncher$WebAppContextWithReload@192232de{/,C:\company\projects\svn\reco\services\portal\trunk\portal-trunk\portal-entrypoint\target\portal-entrypoint-trunk}
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://camel.apache.org/schema/spring]
Offending resource: ServletContext resource [/WEB-INF/applicationContext.xml]

  at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68)
  at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85)
  at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:80)
  at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.error(BeanDefinitionParserDelegate.java:281)
  at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1294)
  at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1287)
  at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:135)
  at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:92)
  at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:507)
  at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:398)
  at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:342)
  at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:310)
  at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)
  at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178)
  at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149)
  at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:124)
  at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:92)
  at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:123)
  at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:422)
  at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352)
  at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
  at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
  at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
  at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:543)
  at org.mortbay.jetty.servlet.Context.startContext(Context.java:136)
  at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1220)
  at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:513)
  at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448)
  at com.google.gwt.dev.shell.jetty.JettyLauncher$WebAppContextWithReload.doStart(JettyLauncher.java:468)
  at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
  at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
  at org.mortbay.jetty.handler.RequestLogHandler.doStart(RequestLogHandler.java:115)
  at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
  at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
  at org.mortbay.jetty.Server.doStart(Server.java:222)
  at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
  at com.google.gwt.dev.shell.jetty.JettyLauncher.start(JettyLauncher.java:672)
  at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:509)
  at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1068)
  at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:811)
  at com.google.gwt.dev.DevMode.main(DevMode.java:311)

Я понятия не имею, что с этим делать, и ни у кого из моих коллег. Я также не знаю, какую другую информацию следует включить в этот пост.

Теги:
spring
gwt

3 ответа

0
Лучший ответ

Забыл обновить с моим решением. Оказывается, что в моих свойствах проекта в Google > Web Application War Directory: не указывал правильно в моем каталоге WAR. Я изменил его, указав на target/ROOT и теперь все работает отлично.

0

При запуске приложения GWT из Eclipse в режиме dev он использует путь к классам, определенный в настройке отладки. Это путь сборки кода, который вы используете для компиляции, плюс любые другие банки или папки, которые вы добавили вручную. Кроме того, поскольку это веб-приложение, оно также будет использовать любые банки в папке WEB-INF/lib.

Когда вы получите сообщение

[WARN] Класс сервера "org.springframework.web.context.ContextLoaderListener" не найден в веб-приложении, но был найден в системном пути к классам [WARN] Добавление файла пути к файлам: /C: /company/m2/repo/org/springframework/spring-web/2.5.6/spring-web-2.5.6.jar 'к пути к классу веб-приложений для этого сеанса

то это означает, что код не может быть найден в папке WEB-INF/lib, но был найден в пути к классам, как определено вашей конфигурацией отладки. Режим GWT dev добавит эту банку в ваш запущенный путь класса веб-приложений.

Как правило, все это прекрасно работает, но если ваш код зависит от классов, которые динамически ищутся с помощью своего рода механизма поиска в классе, этот процесс не работает. Это то, что происходит здесь - обработчик пространства имен и связанная с ним схема будут в банке верблюда, но это не относится к вашему пути к классам.

Ответ прост - просто добавьте банку, содержащую обработчик пространства имен, в папку WEB-INF/lib.

У меня эта проблема много - в основном с весной, но и с библиотекой RSS Rome. Мой проект построен с использованием Maven и для управления этим я настроил Maven с профилем devmode, который включает все зависимости, которые мне нужны, с целью, которая копирует все мои зависимости в папку WEB-INF/lib. Это означает, что я могу управлять всеми моими зависимостями от Maven - полезно при совместном использовании проекта.

  • 0
    Camel-spring-2.0-M3.jar находится в папке WEB-INF / lib :(
  • 0
    Кроме того, у меня, кажется, есть несколько папок WEB-INF. Одна из них находится в portal-entrypoint/src/main/webapp/WEB-INF , но в ней нет папки lib. Затем есть один в portal-entrypoint/target/ROOT/WEB-INF и эта папка содержит папку deploy и lib вместе с portal-entrypoint/target/ROOT/WEB-INF . И, наконец, есть один в portal-entrypoint/target/portal-entrypoint-trunk/WEB-INF , но есть только классы и папки развертывания. Нет папки lib. И все эти местоположения содержат applicationContext.xml и web.xml .
Показать ещё 2 комментария
0

Похоже, что ваше затмение "запускается как приложение для веб-приложений" использует Jetty вместо tomcat и, как-то, приводит к другой конфигурации класса. По внешнему виду вы, вероятно, пропустите несколько банок (связанных с верблюдом) на пристани.

Это обычно происходит, если вы не используете управление зависимостями, например maven, то есть: вам необходимо сознательно управлять тем, какой путь/не включен в ваш путь к классам в какой среде.

Более простой подход заключается в использовании одного и того же контейнера для производства и разработки, а также для обеспечения дополнительной банки, которая вам нужна, включена в WEB-INF/lib, объявив ее в maven pom.

  • 0
    Я использую Maven. Я действительно не знаю, что вы имеете в виду под «использовать один и тот же контейнер как для производства, так и для разработки». И все, что мне нужно, должно быть объявлено в pom, другие разработчики в моей команде прекрасно работают, поэтому это должно быть что-то с моим настройка, а не пом.
  • 0
    Кстати, я думаю, что camel.apache.org/schema/spring пришел не из весенней верблюжьей банки, а из настоящей верблюжьей банки. Вы дважды проверили, действительно ли это есть на classpath?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню