2015-12-10 2 views
1

Я пытаюсь создать проект Spring WebMVC с чистым java (no web.xml), и у меня возникает проблема с конфигурационным файлом. Я использую именно код от this example, где он говорит «100% -ный подход к настройке на основе кода». Тем не менее, eclipse говорит, что я должен удалить аннотацию @Override, потому что onStartup не «реализует метод суперкласса».org.springframework.web.WebAbblicationInitializer.onStartup не будет переопределять метод интерфейса

Похоже, что это может быть проблема с версиями Servlet или Spring, которые я использую, но я не знаю, что бы я мог изменить ни один из них, чтобы это исправить.

Это проект Maven. Я бы хотел решить эту проблему, изменив мои зависимости maven, а не используя конфигурации Eclipse.

Вот файл конфигурации

package com.peak15.jumpgate; 

import javax.servlet.ServletContext; 
import javax.servlet.ServletException; 
import javax.servlet.ServletRegistration; 

import org.springframework.web.WebApplicationInitializer; 
import org.springframework.web.context.ContextLoaderListener; 
import org.springframework.web.context.WebApplicationContext; 
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; 
import org.springframework.web.servlet.DispatcherServlet; 

public class MyWebAppInitializer implements WebApplicationInitializer { 

    @Override // TODO figure out why this doesn't override 
    public void onStartup(ServletContext servletContext) throws ServletException { 
     WebApplicationContext context = getContext(); 
     servletContext.addListener(new ContextLoaderListener(context)); 
     ServletRegistration.Dynamic dispatcher = servletContext.addServlet("DispatcherServlet", new DispatcherServlet(context)); 
     dispatcher.setLoadOnStartup(1); 
     dispatcher.addMapping("/*"); 
    } 

    private AnnotationConfigWebApplicationContext getContext() { 
     AnnotationConfigWebApplicationContext context 
      = new AnnotationConfigWebApplicationContext(); 
     context.setConfigLocation("com.peak15.jumpgate"); 
     return context; 
    } 
} 

здесь 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>jumpgate</groupId> 
    <artifactId>jumpgate2</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>war</packaging> 
    <name>JumpGateII</name> 
    <properties> 
     <jdk.version>1.8</jdk.version> 
     <spring.version>3.2.13.RELEASE</spring.version> 
    </properties> 
    <dependencies> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>javax.servlet-api</artifactId> 
      <version>3.0.1</version> 
     </dependency> 
    </dependencies> 
</project> 

ответ

1

Проверьте, если вы установили JDK 1.8 -> если нет, Затмение недобросовестный Java 1.5 и у вас есть классы внедрение методов интерфейса (которые в Java 1.6 можно аннотировать с помощью @Override, но в Java 1.5 можно применять только методы, переопределяющие метод суперкласса).

Вы также можете добавить Maven компилятора плагин для вашего ПОМ, чтобы убедиться, что он работает с последней версией Java:

<plugins> 
     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.3</version> 
      <configuration> 
       <source>1.8</source> 
       <target>1.8</target> 
      </configuration>     
     </plugin> 
</plugins> 

Надежда, что вызывает проблему.

+0

У меня он был установлен, и я настроил проект на использование Java 8, но конфигурация maven переписала этот параметр. Добавление вашего кода в pom.xml предотвратило это. –

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