Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 弹簧靴&x2B;Gradle:如何构建可执行jar_Java_Spring Boot_Gradle - Fatal编程技术网

Java 弹簧靴&x2B;Gradle:如何构建可执行jar

Java 弹簧靴&x2B;Gradle:如何构建可执行jar,java,spring-boot,gradle,Java,Spring Boot,Gradle,我正试图在SpringBoot+Gradle项目中构建一个可执行的jar,但目前一切都不起作用。这是最简单的结构。Gradle配置中可能缺少某些内容 格拉德尔: buildscript { ext { springBootVersion = '1.5.8.RELEASE' } repositories { mavenCentral() } dependencies { classpath("org.sprin

我正试图在SpringBoot+Gradle项目中构建一个可执行的jar,但目前一切都不起作用。这是最简单的结构。Gradle配置中可能缺少某些内容

格拉德尔:

buildscript {
    ext {
        springBootVersion = '1.5.8.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'org.springframework.boot'

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

jar {
    manifest {
        attributes 'Main-Class': 'com.example.demo.DemoApplication'
    }
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}

dependencies {
    compile('org.springframework.boot:spring-boot-starter-web')
}
主配置文件:

@RestController
@SpringBootApplication
public class DemoApplication {

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

    @GetMapping(value = "/")
    public String index() {
        return "index";
    }
}

当我像java-jar1.jar一样运行jar文件时,我遇到了以下异常:

[main] ERROR org.springframework.boot.SpringApplication - Applicati
on startup failed
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to proces
s import candidates for configuration class [com.example.demo.DemoApplication];
nested exception is java.lang.IllegalArgumentException: No auto configuration cl
asses found in META-INF/spring.factories. If you are using a custom packaging, m
ake sure that file is correct.
        at org.springframework.context.annotation.ConfigurationClassParser.proce
ssDeferredImportSelectors(ConfigurationClassParser.java:556)
        at org.springframework.context.annotation.ConfigurationClassParser.parse
(ConfigurationClassParser.java:185)
        at org.springframework.context.annotation.ConfigurationClassPostProcesso
r.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:308)
        at org.springframework.context.annotation.ConfigurationClassPostProcesso
r.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:228)
        at org.springframework.context.support.PostProcessorRegistrationDelegate
.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.ja
va:272)
        at org.springframework.context.support.PostProcessorRegistrationDelegate
.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:92)
        at org.springframework.context.support.AbstractApplicationContext.invoke
BeanFactoryPostProcessors(AbstractApplicationContext.java:687)
        at org.springframework.context.support.AbstractApplicationContext.refres
h(AbstractApplicationContext.java:525)
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationConte
xt.refresh(EmbeddedWebApplicationContext.java:122)
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.
java:693)
        at org.springframework.boot.SpringApplication.refreshContext(SpringAppli
cation.java:360)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java
:303)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java
:1118)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java
:1107)
        at com.example.demo.DemoApplication.main(DemoApplication.java:13)
Caused by: java.lang.IllegalArgumentException: No auto configuration classes fou
nd in META-INF/spring.factories. If you are using a custom packaging, make sure
that file is correct.
        at org.springframework.util.Assert.notEmpty(Assert.java:277)
        at org.springframework.boot.autoconfigure.AutoConfigurationImportSelecto
r.getCandidateConfigurations(AutoConfigurationImportSelector.java:153)
        at org.springframework.boot.autoconfigure.AutoConfigurationImportSelecto
r.selectImports(AutoConfigurationImportSelector.java:95)
        at org.springframework.context.annotation.ConfigurationClassParser.proce
ssDeferredImportSelectors(ConfigurationClassParser.java:547)
        ... 14 common frames omitted

可能有什么问题?

在spring boot中,您可以通过以下方式直接创建可执行的jar文件

springBoot { 
    executable = true 
}
请试一试

jar{
    baseName = 'myapp' 
    version = 'version'
}
它将创建名为myapp-version.jar的jar 从命令行执行./myapp-version.jar。它将执行


有关更多信息,请参阅以下链接

我用您提供的所有资源创建了一个项目。从终端运行“gradlebuild”,切换到/build/libs,然后运行“java-jarartifactname”就可以了


您是否尝试过清理和重新编译?您使用的是哪个版本的Gradle?

在Boot2.x中,bootJar和bootWar任务负责打包应用程序

bootJar任务负责创建可执行jar文件。一旦应用了java插件,它就会自动创建

如果未生成可执行jar/war文件,请手动运行下面的gradle任务

$./gradlew bootJar
类似地,bootWar生成一个可执行的war文件,并在应用war插件后创建

我们可以使用以下方法执行引导战任务:

$./gradlew bootWar

请注意,对于Spring Boot 2.x,我们需要使用Gradle 4.0或更高版本。

我最近刚刚尝试了一个带有Gradle build的2.1.4.Release版本的Spring Boot应用程序

我从Windows CMD中的目录运行了以下命令

gradlew clean build
(在系统中安装了所需的JDK8之后),我能够看到在下生成的JAR

<project-directory>/build/libs/<project-name-version.jar>
/build/libs/
希望这有助于解决老问题

参考:

我的两分钱

如果要自定义
MANIFEST.MF
文件,使用spring boot时,需要设置
bootJar
任务,它在默认
jar
任务上不起作用

bootJar {
    manifest {
    attributes 'Start-Class': 'com.baeldung.DemoApplication'
    }
}

如果您试图使.jar文件可执行,以便在systemd服务中使用。您必须编辑
bootJar
任务并启用
launchScript

build.gradle

bootJar {
    launchScript()
}
或者使用Gradle Kotlin DSL
build.Gradle.kts

tasks {
    bootJar {
        launchScript()
    }
}

现在,您应该可以将项目的.jar文件作为可执行文件运行。

我不知道必须使用“gradle build”,而是尝试使用“gradle jar”。现在,如何使用gradle build命令提供spring概要文件非常好!非常感谢。我尝试使用5.6.4(OracleJDK1.8)和Lombok;添加spring boot{}产生了一个问题..但是指定bootJar是可行的。你能简单介绍一下你用来启动jar文件的命令吗