2015-10-23 39 views
7

我已经使用Spring Initializer设置了一个弹簧引导项目,我尝试了好几次来创建一个新项目或者使用依赖项来玩,一切似乎都已到位。Spring Boot应用程序无法解析org.springframework.boot包

我使用STS(Spring Tool Suite),它显示有关从org.springframework.boot包导入的错误。运行该应用程序会抛出异常:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: SpringApplication cannot be resolved.

com.example.DemoApplication:

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 

@SpringBootApplication 
public class DemoApplication { 

    public static void main(String[] args) { 
     SpringApplication.run(DemoApplication.class, args); 
    } 
} 

的pom.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<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.example</groupId> 
    <artifactId>demo</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>demo</name> 
    <description>Demo project for Spring Boot</description> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.2.7.RELEASE</version> 
     <relativePath/> <!-- lookup parent from repository --> 
    </parent> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <java.version>1.8</java.version> 
     <start-class>com.example.DemoApplication</start-class> 
    </properties> 

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

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

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


</project> 

我使用Java 1.8与STS。

+0

[@SpringBootApplication可能重复无法解析为STS中的类型](https://stackoverflow.com/questions/41668819/springbootapplication-cannot-be-resolved-to-a-type-in​​-sts ) – Foolish

回答

0

当您将应用程序作为jar运行时,您的Manifest.MF文件应该知道哪个类具有主要方法。

要在SpringBoot编译代码时添加此信息,请在您的pom文件中添加start-class属性。

如:

<properties> 
     <start-class>com.example.DemoApplication</start-class> 
</properties> 
+0

这似乎解决了我的一个问题,很好。但是现在它仍然无法解决SpringApplication类和注释问题。 –

+1

我之前有过这个问题,并且我尝试了三种不同的东西,所以我不太确定哪一个可以解决问题: 1 - 使用强制更新或快照更新您的Maven项目/发布2 - 重新启动您的Spring工具套件 3 - 运行Maven clean命令。 希望这会有所帮助。 – Bruno

+0

如果有一个类包含一个主,你不需要它,因为它会被自动检测到。确保该项目是作为maven项目添加的,而不是将其作为普通的java项目导入。 –

3

项目右键按钮 - >的Maven - >更新项目

,然后选中 “快照/发布的强制更新”

+1

它没有工作 – kamal

+0

在我的情况下,这是根本原因 – hiropon

7

变化春季启动父

版本
<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.4.2.RELEASE</version> 
</parent> 
+1

我花了2个小时。你让我今天一整天都感觉很好。 – Xelian

+0

确实需要设置Spring Boot的最新版本可能很有用。这很愚蠢,但我必须在问题中检查Spring Boot的版本,以确保它是关于更新版本而不是SB版本的问题,因为答案并不能解释发生了什么问题。 。 – Carrm

0

当我尝试使用基本的弹簧启动器时,我遇到了同样的问题ap页。我试图从官方spring-boot site使用最新的弹簧引导版本。

截至今日,最新版本为1.5.4.RELEASE。但是,我一直在我的Eclipse IDE让编译问题不论是多次清理的项目。我降低弹簧启动的版本1.5.3.RELEASE,它只是工作!我的一些早期项目的使用它驱使我去尝试这个选项的旧版本。

2

从您的pom.xml中,尝试删除弹簧储存库条目,默认情况下会从Maven储存库下载。我已经尝试过1.5.6.RELEASE并且工作得很好。

0

我在第一次Spring引导应用程序时遇到了同样的问题。

在教程中,我可以看到以下依赖启动示例应用程序

  • 春天引导1.4.2。RELEASE
  • 的Maven 3
  • 的Java 8

我也做了同样的,我的春节,STS是认识到所有阶层,而是当我注释我的主类@SpringBootApplication它不承认这个类,而我能看到jar在类路径中可用。

我有以下解决问题

  • 取代了我的春天引导1.4.2.RELEASE到1.5.3.RELEASE
  • 右键单击项目和 - > Maven->下载资源
  • 右键点击项目 - > Maven->更新项目

之后,它的工作。

感谢

0

如果下面的步骤不起作用:

取代了我的春天引导1.4.2.RELEASE到1.5.10.RELEASE

  • 右键单击项目和 - > Maven- >下载资源
  • 右键单击项目 - > Maven->更新项目

此错误的原因可能是多个版本的相同下载到您的maven本地资源库文件夹。

所以按照以下步骤清除所有现有存储库瓶和基于在你的pom.xml中定义的依赖开始下载所有..

  1. 转到构建路径。检查添加库中的Maven Repository部分。
  2. 选择任何jar和mousehover ..它会显示本地存储库的位置。 一般是:user/.m2/repository/....
  3. 转到该位置。并删除包含的存储库文件夹。
  4. 现在右键单击你的项目..做Maven - > maven更新。
    这将解决您的依赖性问题。因为Maven会尝试再次从存储库下载所有项目并构建项目。
相关问题