java.lang.ClassNotFoundException: org.springframework.ui.ModelMap - PullRequest
1 голос
/ 02 мая 2010

Я создаю простое веб-приложение, используя Tomcat 6, Spring 2.5.6 и Maven.

Проблема заключается в том, что при загрузке tomcat появляются следующие ошибки:

SEVERE: StandardWrapper.Throwable
java.lang.NoClassDefFoundError: org/springframework/ui/ModelMap
...
Caused by: java.lang.ClassNotFoundException: org.springframework.ui.ModelMap

Класс ModelMap существует в spring-2.5.6.jar и spring-context-2.5.6.jar, у меня также есть несколько других весенних банок. Все они правильно развертываются на tomcat. Когда я проверял приложение WEB-INF (развернуто на tomcat), я обнаружил там все эти jar-файлы!

У меня только один @Controller, у которого есть @RequestMapping("/home.htm") showForm(ModelMap model) метод. Мое приложение Context довольно простое:

<?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
              http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
              http://www.springframework.org/schema/aop 
              http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
              http://www.springframework.org/schema/context
              http://www.springframework.org/schema/context/spring-context-2.5.xsd
              http://www.directwebremoting.org/schema/spring-dwr
              http://www.directwebremoting.org/schema/spring-dwr-3.0.xsd"
    default-autowire="byName">

<context:component-scan base-package="org.myapp"/>
    <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
        <property name="prefix" value="/WEB-INF/view/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>
</beans>

1 Ответ

2 голосов
/ 02 мая 2010

spring-2.5.6.jar - это банка, в котором находятся все пружинные рамки. Если вы используете этот JAR, вы не должны использовать другие JAR, такие как spring-context-2.5.6.jar. Эти меньшие JAR-файлы есть, если вы хотите выбрать и выбрать нужные вам биты Spring.

Вполне возможно, что загрузчик классов путается между дублирующими копиями классов между JAR-файлами. Выньте все Spring JAR, кроме spring-2.5.6.jar, и посмотрите, будет ли это иметь значение.

...