我在这个问题上摸不着头脑,程序如下:
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
答案 0 :(得分:0)
事实证明答案非常复杂,但对我的设置非常具体:
虽然我将org.gradle.java.home属性设置为java 1.7 jdk,但我使用的属性插件根据名为environmentName
的环境变量使用不同的属性文件,此属性设置为不正确的值因此它是从我的环境中读取JAVA_HOME而不是我想要的属性文件中设置的变量。我更改了这个并且jre被切换到正确的运行时。