简单的SpringBoot应用程序在eclipse中工作,从终端抛出异常

时间:2018-03-09 22:11:44

标签: spring eclipse spring-boot exception terminal

我有一个非常简单的SpringBoot应用程序:

HelloConfig.java:

@RestController
@EnableAutoConfiguration
public class HelloConfig {

    @RequestMapping("/time")
    public String time() {
        return "time is " + System.currentTimeMillis();
    }

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

的build.gradle:

plugins {
    id 'java'
    id 'eclipse'
}

dependencies {
    compile 'org.springframework.boot:spring-boot-starter-web:2.0.0.RELEASE'
    testCompile 'junit:junit:4.12'
}

repositories {
    mavenCentral()
}

jar {
    manifest {
        attributes 'Main-Class': 'HelloConfig'
    }
}

该应用程序在eclipse中运行,但是当我从终端运行它时:

gradle build
java -Dserver.port=8080 -jar build/libs/*.jar

我收到以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/boot/SpringApplication
    at HelloConfig.main(HelloConfig.java:18)
Caused by: java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 1 more

如何从unix终端执行此应用程序?

1 个答案:

答案 0 :(得分:0)

将springboot插件添加到build.gradle文件中,如:

apply plugin: 'org.springframework.boot'

然后从命令行输入:

来运行它
gradle bootRun

或者如果您使用gradle包装器

./gradlew bootRun

一般情况下,如果你正在开始一个新的春季启动项目并且你想使用gradle作为构建系统(强烈推荐!!!)那么最好去start.spring.io并选择gradle (不知道为什么他们默认默认为maven!)并且它将包含正确的build.gradle文件,其中包含springboot插件。

关于gradle的惊人之处在于你可以要求它通过以下方式告诉你它认为所知道的所有任务:

gradle tasks --all

因此,如果您想知道是否有特定的参数可以让gradle完成某个任务,那么这将告诉您在build.gradle文件中配置的插件的当前可用内容。