mvn spring-boot:run启动不了spring。

28

回答:我将版本标签从0.0.1-SNAPSHOT更改为1.0.2.RELEASE,问题得到解决。请参见下面的答案。

我正在按照文档的说明创建Example.java文件。当我运行mvn spring-boot:run时,Spring没有启动,只显示BUILD SUCCESS。据我所知,Spring应该启动并且Tomcat应该提供页面服务。

E:\workspace\SpringBoot>mvn spring-boot:run
[INFO] Scanning for projects...
[INFO]
[INFO] Using the builder org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder with a thread count of 1
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building myproject 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> spring-boot-maven-plugin:1.1.0.BUILD-SNAPSHOT:run (default-cli) @ myproject >>>
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ myproject ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory E:\workspace\SpringBoot\src\main\resources
[INFO] skip non existing resourceDirectory E:\workspace\SpringBoot\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ myproject ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ myproject ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory E:\workspace\SpringBoot\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ myproject ---
[INFO] No sources to compile
[INFO]
[INFO] <<< spring-boot-maven-plugin:1.1.0.BUILD-SNAPSHOT:run (default-cli) @ myproject <<<
[INFO]
[INFO] --- spring-boot-maven-plugin:1.1.0.BUILD-SNAPSHOT:run (default-cli) @ myproject ---
[INFO] Attaching agents: []
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.108 s
[INFO] Finished at: 2014-05-01T14:54:26-05:00
[INFO] Final Memory: 16M/232M
[INFO] ------------------------------------------------------------------------

以下是一些细节:

这里有一些细节:

E:\workspace\SpringBoot>java -version
java version "1.7.0_21"
Java(TM) SE Runtime Environment (build 1.7.0_21-b11)
Java HotSpot(TM) 64-Bit Server VM (build 23.21-b01, mixed mode)

E:\workspace\SpringBoot>mvn -v
Apache Maven 3.2.1 (ea8b2b07643dbb1b84b6d16e1f08391b666bc1e9; 2014-02-14T12:37:52-05:00)
Maven home: E:\apps\apache-maven-3.2.1\bin\..
Java version: 1.7.0_21, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.7.0_21\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"

位于 E:\workspace\SpringBoot\src\main\java 的 Example.java:

import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;

@RestController
@EnableAutoConfiguration
public class Example {

    @RequestMapping("/")
    String home() {
        return "Hello World!";
    }

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

}

pom.xml位于E:\ workspace \ SpringBoot:

<?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>myproject</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.1.0.BUILD-SNAPSHOT</version>
    </parent>

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

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

    <!-- (you don't need this if you are using a .RELEASE version) -->
    <repositories>
        <repository>
            <id>spring-snapshots</id>
            <url>http://repo.spring.io/snapshot</url>
            <snapshots><enabled>true</enabled></snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <url>http://repo.spring.io/milestone</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <url>http://repo.spring.io/snapshot</url>
        </pluginRepository>
        <pluginRepository>
            <id>spring-milestones</id>
            <url>http://repo.spring.io/milestone</url>
        </pluginRepository>
    </pluginRepositories>

</project>

1
尝试使用spring-boot 1.0.2.RELEASE。在1.1.0快照中,“run” mojo已更改,您可能会遇到与Windows相关的问题(似乎应用程序正在运行,但您没有看到控制台输出)。 - Dave Syer
我刚开始学习Spring Boot,但是我该去哪个URL查看它呢?我访问了localhost:8080,但是什么也没有显示。 - Don Cheadle
默认情况下应该是localhost:8080,你能提供你的设置和输出吗?另外,你是否正在使用spring-mvc,并且对“/”进行了适当的RequestMapping设置? - szxnyc
啊哈,实际上没有生成控制器。没有自动生成web.xml或任何spring-servlet.xml文件。我以为Spring Boot会做一些这方面的工作。它生成了Application.java,其中包含一个调用SpringApplication.run(Application.class, args);的main方法(所以它正在运行自己,呃...某些东西)。在这种情况下,我应该把一些控制器类放在哪里?我感到措手不及,因为我知道应用程序的入口点是SpringApplication.run(Application.class, args);,但我不知道如何适应实际的Web内容,即控制器类。 - Don Cheadle
1
@mmcrae,你需要使用注解或XML定义你的控制器。请参考这个指南http://docs.spring.io/docs/Spring-MVC-step-by-step/ 或者这个指南http://spring.io/guides/gs/serving-web-content/。 - szxnyc
显示剩余3条评论
5个回答

13
尝试使用spring-boot 1.0.2.RELEASE版本。在1.1.0快照版本中,“run” mojo已更改,您可能遇到了一个与Windows相关的问题(似乎应用程序正在运行,但您看不到控制台输出)。
更新:该错误现在已经修复,因此在1.1.0上也应该可以正常工作。

8
您的pom文件缺少Spring Boot Maven插件:
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

我应该把它放在哪里?我把它放到了我的pom.xml文件中,但是得到了相同的结果。 - szxnyc
你需要将它放在pom文件的与repositories/pluginRepositories等级相同的位置。你能否发布你更新后的Pom文件? - Michael Minella
我刚刚在上面的原始帖子中更新了我的pom.xml文件。 - szxnyc
2
我刚刚使用你更新的pom和上面的Example类创建了一个新的应用程序,并且通过$ mvn spring-boot:run运行良好。 - Michael Minella
1
@MichaelMinella,您能否分享如何使用“mvn spring-boot:run”命令传递jar文件,以便Spring可以加载和扫描它。 - rahul

6

我将版本标签从0.0.1-SNAPSHOT更改为1.0.2.RELEASE,这样就可以正常运行了:

<?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>myproject</artifactId>
    <version>1.0.2.RELEASE</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.1.0.BUILD-SNAPSHOT</version>
    </parent>

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

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

    <!-- (you don't need this if you are using a .RELEASE version) -->
    <repositories>
        <repository>
            <id>spring-snapshots</id>
            <url>http://repo.spring.io/snapshot</url>
            <snapshots><enabled>true</enabled></snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <url>http://repo.spring.io/milestone</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <url>http://repo.spring.io/snapshot</url>
        </pluginRepository>
        <pluginRepository>
            <id>spring-milestones</id>
            <url>http://repo.spring.io/milestone</url>
        </pluginRepository>
    </pluginRepositories>

</project>

Spring现在已经启动:

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::  (v1.1.0.BUILD-SNAPSHOT)

2
我选择了最新版本,并从启动生成器页面中的依赖项中选择了mvc(在受够之后)。所有东西都像微风一样运行。

0
在重构maven多项目的多个pom.xml时,我遇到了类似的问题。当我执行'mvn clean install'时,Spring没有启动,但之前可以启动。 当我将maven-surefire-plugin的属性部分从根模块移动到域模块时,这个问题消失了。然后我发现这个依赖是多余的,于是我将它删除了。这个修复看起来很奇怪,但是确实帮助了我。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接