Spring实战——如何运行第一章的代码(如何生成一个可执行的jar包)

手动创建一个目录kni,进入kni创建一个build.gradle文件,内容如下:

apply plugin: 'java'

jar {
    baseName = 'knight'
    version =  '0.0.1-SNAPSHOT'
}

repositories {
    mavenCentral()
}

dependencies {
    compile("org.springframework:spring-context:4.3.7.RELEASE")
}

然后从第一章取来相应的代码,最终组成这样的目录结构:
这里写图片描述

在终端执行命令gradle build即可成功编译出一个jar文件(build/libs/knight-0.0.1-SNAPSHOT.jar)。
尝试运行jar文件:

cd build/lib/

java -cp knight-0.0.1-SNAPSHOT.jar sia.knights.KnightMain

输出Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/context/support/ClassPathXmlApplicationContext

解决方法一

在build.gradle文件中添加内容:

task copyToLib(type: Copy) {
    into "$buildDir/libs"
    from configurations.runtime
}

build.dependsOn(copyToLib)

定义了一个copyToLib的Task,该Task的作用就是将依赖的jar包全部copy到build/libs下,然后指定为build的依赖。

最后回到项目根目录执行gradle build,再次进入build/libs,执行java -cp * sia.knights.KnightMain即可。

解决方法二

在build.gradle文件中添加内容:

apply plugin: 'application'

mainClassName = System.getProperty("mainClass")

然后回到项目根目录,这样运行:

gradle run -DmainClass=sia.knights.KnightMain

解决方法三

在build.gradle文件中添加内容:

task run(type: JavaExec, dependsOn: classes) {
    main = 'sia.knights.KnightMain'
    classpath sourceSets.main.output.classesDir
    classpath sourceSets.main.output.resourcesDir
    classpath configurations.runtime
}

然后回到项目根目录,这样运行:

gradle run

解决方法四

在build.gradle头部添加插件

plugins {
    id "us.kirchmeier.capsule" version "1.0.2"
}

然后添加一个打包的task

task fatCapsule(type: FatCapsule) {
    applicationClass 'sia.knights.KnightMain'
}

然后回到项目根目录,这样运行,即可生成一个可执行的jar包:

gradle fatCapsule
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值