2015-12-12 2 views
0

Сначала я хочу объявить, что я пробовал решение this, но это не работает в моем случае.spring java.lang.ClassNotFoundException: org.springframework.context.ApplicationContext

У меня есть pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.rhcloud.mvc</groupId> 
    <artifactId>spring.mvc</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>war</packaging> 
    <properties> 
     <org.springframework-version>4.1.6.RELEASE</org.springframework-version> 
     <org.aspectj-version>1.6.10</org.aspectj-version> 
     <org.slf4j-version>1.6.6</org.slf4j-version> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <maven.compiler.source>1.8</maven.compiler.source> 
     <maven.compiler.target>1.8</maven.compiler.target> 
    </properties> 
    <dependencies> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>${org.springframework-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-log4j12</artifactId> 
      <version>${org.slf4j-version}</version> 
      <scope>runtime</scope> 
     </dependency> 
     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.15</version> 
      <exclusions> 
       <exclusion> 
        <groupId>javax.mail</groupId> 
        <artifactId>mail</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>javax.jms</groupId> 
        <artifactId>jms</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>com.sun.jdmk</groupId> 
        <artifactId>jmxtools</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>com.sun.jmx</groupId> 
        <artifactId>jmxri</artifactId> 
       </exclusion> 
      </exclusions> 
      <scope>runtime</scope> 
     </dependency> 
    </dependencies> 
</project> 

и

public class AppInitializer implements WebApplicationInitializer { 

    public void onStartup(ServletContext servletContext) throws ServletException { 

     WebApplicationContext rootContext = getWebApplicationContext(); 
     servletContext.addListener(new ContextLoaderListener(rootContext));  

     // add the dispatcher servlet and map it to/
     ServletRegistration.Dynamic dispatcher = servletContext.addServlet(
       "springDispatcher", new DispatcherServlet(rootContext)); 
     dispatcher.setLoadOnStartup(1); 
     dispatcher.addMapping("/"); 
    } 

    private AnnotationConfigWebApplicationContext getWebApplicationContext() { 
     AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); 
     context.setConfigLocation("com.rhcloud.mvcapp.configuration"); 
     return context; 
    } 

} 

и один конфигурационный класс является

//is for using various annotations as @RequestMapping, @ResponseBody, @Valid etc. 
@EnableWebMvc 
// is for enabling Java based Configuration. 
@Configuration 
// is for finding Classes with @Controller. 
@ComponentScan(basePackages = { "com.rhcloud.mvcapp.controllers" }) 
public class ServletConfigurer extends WebMvcConfigurerAdapter { 

    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
     registry.addResourceHandler("/resources/**").addResourceLocations(
       "/resources/"); 
    } 

    @Override 
    public void configureDefaultServletHandling(
      DefaultServletHandlerConfigurer configurer) { 
     configurer.enable(); 
    } 

    /** 
    * A view resolver helps the dispatcher servlet identify the views that have 
    * to be rendered as the response for a specific web request 
    */ 
    @Bean 
    public InternalResourceViewResolver jspViewResolver() { 
     InternalResourceViewResolver bean = new InternalResourceViewResolver(); 
     bean.setPrefix("/WEB-INF/views/"); 
     bean.setSuffix(".jsp"); 
     return bean; 
    } 
} 

Я контроллер

@Controller 
public class HomeController { 

    @RequestMapping("/") 
    public String goHome() { 
     return "home"; 
    } 
} 

, но я получаю ошибку

SEVERE: Error during ServletContainerInitializer processing 
javax.servlet.ServletException: Failed to instantiate WebApplicationInitializer class 
    at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:160) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5156) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1399) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:760) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2472) 
    at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:854) 
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1274) 
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1157) 
    at java.lang.Class.getDeclaredConstructors0(Native Method) 
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671) 
    at java.lang.Class.getConstructor0(Class.java:3075) 
    at java.lang.Class.newInstance(Class.java:412) 
    at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:157) 
    ... 8 more 
Caused by: java.lang.ClassNotFoundException: org.springframework.context.ApplicationContext 
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1305) 
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1157) 
    ... 20 more 

наконец Я
WEB_DEP_ASEEMBLY

и я могу видеть, что файл находится в пути

whole project snip

ответ

1

Вам нужно добавить spring-context и spring-core на ваш pom

<dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>${org.springframework-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>${org.springframework-version}</version> 
    </dependency> 
+0

org.springframework весна-webmvc $ {org.springframework-версия} включает в себя ядро ​​и контекст ... поэтому нет необходимости этих тегов. –

Смежные вопросы