gpt4 book ai didi

scala - jvm 选项未传递给 fork 进程

转载 作者:行者123 更新时间:2023-12-04 03:20:34 27 4
gpt4 key购买 nike

根据文档,一个 sbt forked 进程应该接收当前进程的 jvm 设置:

默认情况下, fork 进程使用与当前进程的构建、工作目录和 JVM 选项相同的 Java 和 Scala 版本。见:http://www.scala-sbt.org/0.13/docs/Forking.html

然而,对我来说似乎并非如此。进行以下测试:

object Test {

def main(args: Array[String]): Unit = {

println("Conf: " + System.getProperty("config.resource"))
}
}

如果我使用 sbt -Dconfig.resource=test.conf 运行它,则会打印“Conf: test.conf”。但是一旦我在 run 中添加 fork := true 在我的 build.scala “Conf: null” 被打印出来。这对我来说意味着 jvm 选项实际上并没有传递给 fork 进程。有人能告诉我我在这里错过了什么吗?
import sbt._
import Keys._

object Build extends Build {
lazy val root = (project in file(".")).
settings(
fork in run := true
)
}

最佳答案

SBT 文档是正确的,JVM 属性确实会传递给 fork 进程。但是,您担心需要手动传递的 System 属性。试试这个来传递所有系统属性:

import scala.collection.JavaConversions._

javaOptions in run += {
val props = System.getProperties
props.stringPropertyNames().toList.map { configKey =>
s"-D$configKey=${props.getProperty(configKey)}"
}.mkString(" ")
}

关于scala - jvm 选项未传递给 fork 进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27486540/

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