通过sbt使用java选项运行项目

时间:2017-12-19 14:52:43

标签: scala sbt

我正在使用命令java -Djava.security.krb5.conf=/krb5.conf -jar my.jar运行我的胖罐。

如何通过sbt使用此选项运行我的应用程序?
$ sbt -Djava.security.krb5.conf="module\\src\\main\\resources\\krb5.conf" run不起作用。错误:

  

ctl-scala> sbt -Djava.security.krb5.conf =“ctl-core \ src \ main \ resources \ krb5.conf”ctl-ui-backend / run
  警告:无效的系统属性'java.security.krb5.conf'
  [info]从C:\ Users \ User \ .sbt \ 0.13 \ plugins中加载全局插件   [info]从C:\ Users \ User \ IdeaProjects \ ctl-scala \ project中加载项目定义   [info]将当前项目设置为ctl(在构建文件中:/ C:/ Users / User / IdeaProjects / ctl-scala /)
  [错误]没有有效的解析器。
  [错误] ctl-core \\ src \\ main \\ resources \\ krb5.conf
  [错误] ^

5 个答案:

答案 0 :(得分:1)

按照sbt手册,它将JAVA_OPTS环境变量传递给Java,如果您不能设置该变量,则jvmopts将保存Java命令行参数。因此,如果您在bash中:

export JAVA_OPTS="-Djava.security.krb5.conf=/krb5.conf"

在sbt命令之前,会将参数传递给Java运行时。

答案 1 :(得分:0)

看一下我通过sbt传递命令行参数的项目之一:

https://github.com/joesan/plant-simulator/blob/master/README.md

我想你的双引号搞砸了!没有它们就试试吧!

答案 2 :(得分:0)

你能试试sbt -J-Djava.security.krb5.conf="module/src/main/resources/krb5.conf" run

吗?

-J会使sbt启动程序将这些选项作为选项传递给JVM。

答案 3 :(得分:0)

您可以在运行应用程序时强制sbt派生新的JVM,并在WorldAnchorManager文件中使用以下设置来设置所需的Java选项:

using Microsoft.MixedReality.Toolkit.Experimental.Utilities;
using UnityEngine;

public class SetWorldAnkeredObject : MonoBehaviour
{
    public GameObject anchoredObject;
    public WorldAnchorManager store;
    private string anchorId = "AnchoredCube";
    private bool savedRoot;

    void Start()
    {
        store.AttachAnchor(anchoredObject, anchorId);
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.L))
        {
            store.AttachAnchor(anchoredObject, anchorId);
        }
        if (Input.GetKeyDown(KeyCode.Return))
        {
            if (anchoredObject != null)
                store.RemoveAnchor(anchorId);
            anchoredObject.transform.position = this.transform.position;
            store.AttachAnchor(anchoredObject, anchorId);
        }
    }
}

只需运行for i in range (0, len(list)): if list[i] == someValue and all(x != someValue for x in list[i+1:i+10]): doSomething() 任务,它将使用所需的Java选项在自己的JVM中启动应用程序。

答案 4 :(得分:0)

另一个选择是使用.sbtopts文件。它应位于sbt.build旁边的根文件夹中。它的内容应该是java选项,其前缀为-J(如先前答案中所述),以告诉sbt将这些选项传递给JVM。 例如,其内容可以是:

-J-Djava.security.krb5.conf=/krb5.conf