我有一个非常简单的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终端执行此应用程序?
答案 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
文件中配置的插件的当前可用内容。