2016-07-31 3 views
1

Я пытаюсь создать новый проект с помощью SpringBoot, аннотация @Controller, похоже, работает, но Eclipse жалуется, говоря, что это не аннотация. Любые идеи для решения этого?@Controller не является аннотацией

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>gpID</groupId> 
    <artifactId>myApp</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>My App</name> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.4.0.RELEASE</version> 
    </parent> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-devtools</artifactId> 
      <optional>true</optional> 
     </dependency> 

     <dependency> 
      <groupId>com.google.apis</groupId> 
      <artifactId>google-api-services-youtube</artifactId> 
      <version>v3-rev177-1.22.0</version> 
     </dependency> 

    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

Controller.java

package myApp.controllers; 

import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 
import org.springframework.web.bind.annotation.RequestMapping; 

@Controller // This line is not understood in Eclipse 
@EnableAutoConfiguration 
public class Controller { 

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

} 
+2

выглядит как вам понадобится переименовать класс SMTH другой, чем 'Controller' – injecteer

+2

Не пытаясь его, вы пробовали переименовать свой класс? Может быть, eclipse запутался в том, что вы используете имя своего класса в качестве аннотации? Или попробуйте полный путь к классу Spring-Controller в вашей аннотации '@ org.springframework .... Controller' –

ответ

3

Ваш код сбивает с толку, но позволяет быть точным:

  1. В конце концов, "обычай" аннотаций классы Java. Таким образом, как и любой другой класс - если вы хотите использовать их в исходном коде, вам понадобится инструкция import для этого самого класса. Итак, в вашем случае: укажите «полное» имя для аннотации контроллера, которую вы собираетесь использовать, убедитесь, что его файл класса находится в вашем пути сборки, а затем добавьте оператор импорта. Как с: import org.springframework.stereotype.Controller;
  2. Не называйте свой класс «X», когда вы собираетесь пользователя другой аннотаций под названием X, слишком

Пункт 1 должен исправить «компилировать» проблему; и пункт 2 действительно необходим, если вы не хотите путать себя и других будущих читателей вашего кода. Да, java позволяет использовать имена классов x.Y и z.Y; но если возможно: избегайте этого! Вы видите, что когда вы используете имя Y в двух разных значениях в одном классе, то, например, вы должны постоянно использовать абсолютные имена, такие как x.Y и z.Y.

+0

Когда я реорганизовал имя моего класса, он также меняет имя аннотации, которая ясно доказала, что это запутывает два. Спасибо за ответ ! – L01c

+0

Рад, что это помогает ... если да, не забывайте о принятии ответа. – GhostCat

-1
<dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>4.0.0.RELEASE</version> 
</dependency> 

возможно это?

0

Вы должны использовать полное имя для аннотирования, так как ваш класс называется Controller

@org.springframework.stereotype.Controller 
public class Controller {... 
Смежные вопросы