gradle bootRun 执行失败
Posted
技术标签:
【中文标题】gradle bootRun 执行失败【英文标题】:Execution of gradle bootRun fails 【发布时间】:2017-02-06 23:07:10 【问题描述】:我正在尝试运行我的 springboot 应用程序...这一切都始于我将 eureka spring-cloud 插件添加到我的 gradle.build 文件中:
编译'org.springframework.cloud:spring-cloud-starter-eureka'
当我运行“gradle bootRun”时,我得到了这个错误:
原因:java.io.IOException:无法运行程序“C:\Program Files\Java\jdk1.8.0_91\bin\java.exe”。 CreateProcess 错误=206,文件名太长。
我的 build.gradle 是:
import java.text.SimpleDateFormat
buildscript
ext
springBootVersion = '1.3.2.RELEASE'
elasticSearchVersion = '2.2.0'
groovyVersion = '2.4.5'
repositories
jcenter()
mavenCentral()
dependencies
classpath("org.springframework.boot:spring-boot-gradle-plugin:$springBootVersion")
classpath 'io.spring.gradle:dependency-management-plugin:0.5.5.RELEASE'
classpath 'com.github.ben-manes:gradle-versions-plugin:0.12.0'
classpath 'org.kordamp.gradle:stats-gradle-plugin:0.1.5'
apply plugin: 'java'
apply plugin: 'groovy'
apply plugin: 'eclipse-wtp'
apply plugin: 'idea'
apply plugin: 'spring-boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'com.github.ben-manes.versions'
apply plugin: 'org.kordamp.gradle.stats'
def buildDate = new SimpleDateFormat('yyyyMMdd-hhmmss').format(new Date())
version = '1.0.RC1.' + buildDate
sourceCompatibility = 1.8
targetCompatibility = 1.8
repositories
jcenter()
mavenCentral()
maven url "https://repo.spring.io/snapshot"
maven url "https://repo.spring.io/milestone"
ext['elasticsearch.version'] = elasticSearchVersion
ext['groovy.version'] = groovyVersion
ext['guava.version'] = '18.0'
ext['lombok.version'] = '1.16.6'
dependencyManagement
imports
mavenBom "org.springframework.boot:spring-boot-starter-parent:$springBootVersion"
mavenBom "org.springframework.cloud:spring-cloud-starter-parent:Brixton.M5"
mavenBom 'io.spring.platform:platform-bom:2.0.2.RELEASE'
dependencies
compile('org.springframework.boot:spring-boot-starter-actuator')
compile('org.springframework.boot:spring-boot-starter-aop')
compile('org.springframework.boot:spring-boot-starter-cache')
compile('org.springframework.cloud:spring-cloud-starter-hystrix')
compile 'org.jadira.usertype:usertype.extended:5.0.0.GA'
compile('org.springframework.boot:spring-boot-starter-data-jpa')
compile('org.springframework.boot:spring-boot-starter-data-rest')
//compile('org.springframework.data:spring-data-rest-hal-browser')
compile('org.springframework.boot:spring-boot-devtools')
compile('org.springframework.boot:spring-boot-starter-hateoas')
compile('org.projectlombok:lombok')
compile('org.springframework.boot:spring-boot-starter-thymeleaf')
compile('org.springframework.boot:spring-boot-starter-web')
compile "org.elasticsearch:elasticsearch:$elasticSearchVersion"
compile 'commons-lang:commons-lang'
compile 'commons-codec:commons-codec'
compile 'commons-collections:commons-collections'
compile 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310'
compile 'org.springframework.boot:spring-boot-starter-freemarker'
compile 'de.codecentric:spring-boot-admin-starter-client:1.3.2'
compile 'org.flywaydb:flyway-core'
compile('com.domingosuarez:oneltico:0.1.2')
compile("org.springframework:spring-jms")
compile("org.apache.activemq:activemq-broker")
compile 'org.apache.activemq:activemq-pool'
compile 'org.springframework.cloud:spring-cloud-starter-eureka'
compile 'com.mashape.unirest:unirest-java:1.4.9'
runtime "org.postgresql:postgresql:9.4-1203-jdbc42"
testCompile('org.springframework.boot:spring-boot-starter-test')
eclipse
classpath
containers.remove('org.eclipse.jdt.launching.JRE_CONTAINER')
containers 'org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8'
springBoot
executable = true
我把插件拿出来,它可以正确执行。
我知道这应该是 Windows 问题长路径,但我该如何给出解决方案?
【问题讨论】:
tuhrig.de/gradles-bootrun-and-windows-command-length-limit 感谢 tim_yates!我在这一行添加了简单的引号:it.toURL().toString().replaceFirst('/file:/+/', '/') 【参考方案1】:tim_yates 是对的,谢谢!
我从链接中获取代码并将其粘贴到我的 build.gradle 文件的末尾,它就像一个 gem!
我添加的代码是:
task pathingJar(type: Jar)
dependsOn configurations.runtime
appendix = 'pathing'
doFirst
manifest
attributes "Class-Path": configurations.runtime.files.collect
it.toURL().toString().replaceFirst('/file:/+/', '/')
.join(' ')
bootRun
dependsOn pathingJar
doFirst
classpath = files("$buildDir/classes/main", "$buildDir/resources/main", pathingJar.archivePath)
注意:我在链接代码中添加了一些简单的引号 (') 以使其正常工作..
【讨论】:
以上是关于gradle bootRun 执行失败的主要内容,如果未能解决你的问题,请参考以下文章
如何创建将使用特定配置文件执行 bootRun 的 gradle 任务?
Gradle > 如何停止使用 gradle bootRun 启动的 Spring Boot 应用程序?
错误:Gradle:任务“:core:compileJava”执行失败。 > 编译失败
错误:任务 ':app:transformClassesWithDexForDebug' Gradle 执行失败