简单的groovy程序失败并出现错误:没有方法签名:java.lang.ProcessBuilder.inheritIO()适用于参数类型:()值:[]

时间:2014-05-05 08:45:07

标签: java groovy gradle

我在这个问题上摸不着头脑,程序如下:

class MyClass {
    def static someMethod() {
        def pb = new ProcessBuilder("")
        pb.inheritIO()
        pb.setCommand(/* command list */)
        def process = pb.start()
        ...
        println "profit"
    }
}

除了运行上面的(或equivelant)之外,它给出了输出:

No signature of method: java.lang.ProcessBuilder.inheritIO() is applicable for argument types: () values: []

inheritIO显然是一种方法defined in the ProcessBuilder class

所以这里出了什么问题?

语境:这是在使用jdk 7u55进行gradle构建期间发生的,除非我想这个信息是无关的。在我看来,groovy已经忘记了它在做什么。

编辑:如果我删除了pb.inheritIO()行,那么当我调用pb.start()时会抛出另一个错误:

java.lang.ArrayStoreException

1 个答案:

答案 0 :(得分:0)

事实证明答案非常复杂,但对我的设置非常具体:

虽然我将org.gradle.java.home属性设置为java 1.7 jdk,但我使用的属性插件根据名为environmentName的环境变量使用不同的属性文件,此属性设置为不正确的值因此它是从我的环境中读取JAVA_HOME而不是我想要的属性文件中设置的变量。我更改了这个并且jre被切换到正确的运行时。