Wenn ich versuche, „exec“ in SBT zu laufen, erhalte ich „Fehler exec ausgeführt wird: java.lang.ArrayIndexOutOfBoundsException: 0“. Wie repariert man?

StackOverflow https://stackoverflow.com/questions/3860800

  •  27-09-2019
  •  | 
  •  

Frage

Wenn ich ein SBT-Projekt erstellen, selbst eine einfache „Hallo Welt“, die Kompilierung (erfolgreich) und dann exec wird der folowing Fehler ausgelöst. Was mag der Grund sein, und wie diese zu beheben?


java.lang.ArrayIndexOutOfBoundsException: 0
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:459)
    at sbt.SimpleProcessBuilder.run(ProcessImpl.scala:381)
    at sbt.AbstractProcessBuilder.run(ProcessImpl.scala:130)
    at sbt.AbstractProcessBuilder.$bang(ProcessImpl.scala:158)
    at sbt.ExecProject$$anonfun$execOut$1.apply(ScalaProject.scala:436)
    at sbt.ExecProject$$anonfun$execOut$1.apply(ScalaProject.scala:435)
    at sbt.TaskManager$Task.invoke(TaskManager.scala:62)
    at sbt.impl.RunTask.doRun$1(RunTask.scala:77)
    at sbt.impl.RunTask.runTask(RunTask.scala:85)
    at sbt.impl.RunTask.run(RunTask.scala:32)
    at sbt.impl.RunTask$.apply(RunTask.scala:17)
    at sbt.impl.RunTask$.apply(RunTask.scala:16)
    at sbt.Project$class.run(Project.scala:98)
    at sbt.Project$class.call(Project.scala:93)
    at sbt.BasicScalaProject.call(DefaultProject.scala:21)
    at sbt.xMain$$anonfun$7.apply(Main.scala:512)
    at sbt.xMain$$anonfun$7.apply(Main.scala:512)
    at sbt.xMain.withAction(Main.scala:541)
    at sbt.xMain.sbt$xMain$$handleAction(Main.scala:512)
    at sbt.xMain.handleCommand(Main.scala:502)
    at sbt.xMain.processAction(Main.scala:441)
    at sbt.xMain.process$1(Main.scala:257)
    at sbt.xMain$Continue$1.apply(Main.scala:132)
    at sbt.xMain.run$1(Main.scala:136)
    at sbt.xMain.processArguments(Main.scala:266)
    at sbt.xMain.startProject(Main.scala:107)
    at sbt.xMain.run(Main.scala:84)
    at sbt.xMain.run0$1(Main.scala:35)
    at sbt.xMain.run(Main.scala:42)
    at xsbt.boot.Launch$.run(Launch.scala:53)
    at xsbt.boot.Launch$$anonfun$explicit$1.apply(Launch.scala:42)
    at xsbt.boot.Launch$$anonfun$explicit$1.apply(Launch.scala:42)
    at xsbt.boot.Launch$.launch(Launch.scala:57)
    at xsbt.boot.Launch$.explicit(Launch.scala:42)
    at xsbt.boot.Launch$.initialized(Launch.scala:38)
    at xsbt.boot.Launch$.parsed(Launch.scala:31)
    at xsbt.boot.Launch$.configured(Launch.scala:21)
    at xsbt.boot.Launch$.apply(Launch.scala:16)
    at xsbt.boot.Launch$.apply(Launch.scala:13)
    at xsbt.boot.Boot$.runImpl(Boot.scala:24)
    at xsbt.boot.Boot$.run(Boot.scala:19)
    at xsbt.boot.Boot$.main(Boot.scala:15)
    at xsbt.boot.Boot.main(Boot.scala)
[info] == exec ==
[error] Error running exec: java.lang.ArrayIndexOutOfBoundsException: 0

War es hilfreich?

Lösung

Der Zweck der Build-Aktion exec ist ein Befehl auf dem darunterliegenden Shell auszuführen. Als solches muss es mit einem Befehl zu befolgen. Beispiel:

exec killall firefox

Unter den Abdeckungen, SBT ruft java.lang.ProcessBuilder, die diese Ausnahme auslöst, wenn der Anrufer versucht, es zu starten, aber keine Parameter zur Verfügung gestellt hat.

IndexOutOfBoundsException - If the command is an empty list (has size 0)

Ich rechne damit, SBT sollte nicht diese Ausnahme Vermehrungs und dass dies ein Fehler. Sie sollten stattdessen eine Fehlermeldung erhalten.

Vielleicht haben Sie gesucht Build Aktion run , die Ihre Hauptklasse aufrufen wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top