gpt4 book ai didi

java - 如何使用 gradle 启动交互式 Java 应用程序

转载 作者:行者123 更新时间:2023-12-02 10:11:29 24 4
gpt4 key购买 nike

我想编写一个 gradle 任务来运行这个小应用程序:

import java.lang.IllegalArgumentException

class TestApp{
companion object {
@JvmStatic
fun main(args:Array<String>){
val a = try{
args[0].toInt()
}catch (e:Exception) {throw argException}

val b = try{
args[1].toInt()
}catch (e:Exception) {throw argException}

print("$a + $b = ")
val answer = readLine()!!.toInt()

println(if(a+b == answer)"CORRECT" else "WRONG!")
}

private val argException:IllegalArgumentException by lazy { IllegalArgumentException("expecting two integers as args") }
}
}

如果我使用 Intellij 运行应用程序,应用程序将在 readline() 处暂停并等待用户输入。

但是,如果我为其添加一个 gradle 任务

task runTestApp(type:JavaExec){
main = "${javaMainTestApp}"
classpath = sourceSets.main.runtimeClasspath
}

然后运行,比如说,

gradle runTestApp --args="2 4"

然后我就明白了

2 + 4 = Exception in thread "main" kotlin.KotlinNullPointerException
at [...].app.TestApp$Companion.main(TestApp.kt:19)
at [...].app.TestApp.main(TestApp.kt)

这是为什么呢?更重要的是,如何让执行等待用户输入?

更新

谢谢@tim_yates:

添加 standardInput = System.in 使应用接受用户输入

但会产生如下输出:

3 + 5 =
<<==========---> 80% EXECUTING [20s]
> :runTestApp
8

其中 8 是用户输入。

因此,当应用程序完成时,输出为

3 + 5 =
<<======CORRECT> 80% EXECUTING [22s]

最佳答案

也许你可以使用application plugin并执行gradle run。或者您可以使用distribution plugin并运行脚本。

关于java - 如何使用 gradle 启动交互式 Java 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54973616/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com