如何从Windows bat文件运行KotlinIntelliJ Idea项目?

lrl1mhuk  于 2023-05-06  发布在  Windows
关注(0)|答案(2)|浏览(163)

我有一个Kotlin脚本,它使用println()创建文件并输出一些日志消息。当我从IntelliJ运行脚本时,它按预期工作,创建文件并在控制台中显示输出。但是,当我使用批处理文件运行脚本时,并没有创建这些文件,并且在命令提示符中看不到任何输出。
下面是我的Kotlin代码:

import java.io.File

fun main(args: Array<String>) {
    println("Starting main function")
    println("Hello World!")
    createFile("C:\\0_Scripts\\CSV_ To proper format\\👽hi_there.txt", textToFile = "Hello there)")
    createFile("C:\\0_Scripts\\CSV_ To proper format\\11111.txt", textToFile = "Hello there)")
    createFile("C:\\0_Scripts\\CSV_ To proper format\\\uD83D\uDE08hi_there.txt", textToFile = "Hello there)")
    println("File created")
    println("Program is Finished)")
}

fun createFile(absolutePathToFileWithExtension: String, textToFile: String) =
    File(absolutePathToFileWithExtension).writeText(textToFile)

下面是我用来编译和运行Kotlin脚本的批处理脚本:

cd C:\Users\user\IdeaProjects\TestScript
kotlinc src\main\kotlin\Main.kt -d bin
java -cp bin MainKt
pause

当我运行批处理脚本时,我看到以下输出,但没有日志消息或创建的文件:

C:\0_Scripts\CSV_ To proper format>test.bat
src\main\kotlin\Main.kt:4:10: warning: parameter 'args' is never used
fun main(args: Array<String>) {
         ^

C:\Users\user\IdeaProjects\TestScript>

可能导致此问题的原因是什么,以及如何解决它:
.1.参见控制台输出。2.从批处理文件运行IntelliJ项目时操作文件?

编辑!

感谢答案,这是工作脚本:

cd C:\Users\user\IdeaProjects\TestScript
call kotlinc src\main\kotlin\Main.kt -d bin
kotlin -cp bin MainKt
pause
lawou6xi

lawou6xi1#

当您在命令行上调用kotlinc时,您正在运行文件.../kotlinc/bin/kotlinc.bat。当您从另一个批处理文件运行一个批处理文件时,控制将转移到新的批处理文件,并且永远不会返回到调用批处理文件(即它更像是goto而不是call)。所以,发生的事情是,你的批处理文件运行kotlinc,然后什么也没有发生,因为kotlinc.bat没有返回到你的脚本,而是返回到命令行。
要解决此问题,您需要替换此行:

kotlinc src\main\kotlin\Main.kt -d bin

其中:

call kotlinc src\main\kotlin\Main.kt -d bin

此外,您需要按照Fox2Code在另一个答案中所说的那样做(使用call kotlin而不是java运行应用程序)。

jk9hmnmh

jk9hmnmh2#

但是调用java你调用的是java jvm,它不会加载Kotlin库和依赖项。
您应该将java的使用替换为kotlin
所以命令是:

cd C:\Users\user\IdeaProjects\TestScript
kotlinc src\main\kotlin\Main.kt -d bin
kotlin -cp bin MainKt
pause

据我所知,你可以像调用java二进制文件一样调用kotlin二进制文件。

相关问题