0

次の Groovy スクリプトがあります。

#!/opt/groovy-1.8.6/bin/groovy

final env = null // []

final command = ["./setter-for-catan.scala"]
final process = command.execute(env, null)

println (['echo', '********************** 0'].execute(env, null).text)
final stdout = process.inputStream
BufferedReader reader = new BufferedReader(new InputStreamReader(stdout))
while ((line = reader.readLine()) != null) {
    System.out.println ("Stdout: " + line);
}

および次の Scala スクリプト:

#!/bin/bash

export SCALA_HOME=/opt/scala-2.10.1

echo '********************* 1' "$0" "$@"
${SCALA_HOME}/bin/scala -version 2>&1
exec ${SCALA_HOME}/bin/scala "$0" "$@" 2>&1
!#

println("******************* 2")

Groovy スクリプトの出力を呼び出すと、次のようになります。

********************** 0

Stdout: ********************* 1 ./setter-for-catan.scala
Stdout: Scala code runner version 2.10.1 -- Copyright 2002-2013, LAMP/EPFL
Stdout: ******************* 2

envが として定義されている場合[]、Groovy スクリプトがハングし、次の出力が表示されます。

********************** 0

Stdout: ********************* 1 ./setter-for-catan.scala
Stdout: Scala code runner version 2.10.1 -- Copyright 2002-2013, LAMP/EPFL

何が起こっているのか、何をする必要execute()envあるのArrayですか?

4

1 に答える 1

1

JAVA_HOME は Scala スクリプトによって継承されていないため、定義する必要があります。

それを行う 1 つの方法は、Scala スクリプト内にあります。

#!/bin/bash

export JAVA_HOME=/Library/Java/Home
export SCALA_HOME=/opt/scala-2.10.1

echo '********************* 1' "$0" "$@"
${SCALA_HOME}/bin/scala -version 2>&1
exec ${SCALA_HOME}/bin/scala "$0" "$@" 2>&1
!#

別の方法は、Groovy スクリプトで行うことです。

final env = ['JAVA_HOME=/Library/Java/Home']
于 2013-07-01T03:27:47.507 に答える