2015-10-23 35 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會嘗試再次從存儲庫下載所有項目並構建項目。
相關問題