gpt4 book ai didi

gradle - 在IntelliJ中找到但在内置jar中找不到文件

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

我正在通过编译器运行一些代码,并且必须查询用户使用哪个操作系统来调用适当的二进制文件。该代码可以工作,并在IntelliJ中调用二进制文件,但是当我使用gradle构建jar文件时,在与val tempBinaryCopy相对应的行上,我得到了一个文件未找到异常(二进制文件)。

 fun assemble(file: String) {

val currentDirectory = System.getProperty("user.dir")

val binary = when {
System.getProperty("os.name").startsWith("Linux") -> javaClass.classLoader.getResource("osx_linux").file
System.getProperty("os.name").startsWith("Mac") -> javaClass.classLoader.getResource("osx_mac").file
else ->javaClass.classLoader.getResource("osx_win.exe").file
}

val binaryFile = File(binary).name
val assemblyFile = File(file).name

val tempBinaryCopy = File(binary).copyTo(File(currentDirectory, binaryFile), true)
val tempAssemblyCopy = File(file).copyTo(File(currentDirectory, assemblyFile), true)

tempAssemblyCopy.deleteOnExit()
tempBinaryCopy.deleteOnExit()

Files.setPosixFilePermissions(tempBinaryCopy.toPath(), setOf(PosixFilePermission.OWNER_EXECUTE))
val process = Runtime.getRuntime().exec(arrayOf(tempBinaryCopy.absolutePath, tempAssemblyCopy.absolutePath, "-v"))
process.inputStream.bufferedReader().readLines().forEach { println(it) }
}

异常(exception)
Exception in thread "main" kotlin.io.NoSuchFileException: file:/Users/dross/Desktop/OS.jar!/osx_mac: The source file doesn't exist.
at kotlin.io.FilesKt__UtilsKt.copyTo(Utils.kt:179)
at kotlin.io.FilesKt__UtilsKt.copyTo$default(Utils.kt:177)
at com.max.power.os.assembler.ProvidedAssembler.assemble(ProvidedAssembler.kt:22)

我也尝试过在有问题的行上进行替换以删除!结果是一样的。

最佳答案

javaClass.classLoader.getResource("osx_linux")为您提供URL的实例,URL.file为您提供URL的文件部分。只要文件未打包在JAR中,这就可能起作用,但是如您所见,如果文件打包在JAR中,则失败。您可能应该改用getResourceAsStream,然后将收到的InputStream复制到您想要的目的地。

关于gradle - 在IntelliJ中找到但在内置jar中找不到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46650369/

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