披露:我对Java不是特别熟悉,所以如果下面有什么不正确的地方,请指出
我正在尝试使用Caliper来运行一些微基准测试,用于指令插入的代码,以及指令插入的JRE。
我将我的JAVA_HOME设置为指向插入指令的JRE (这样$JAVA_HOME/bin/java就合适了)。我使用$JAVA_TOOL_OPTIONS设置了各种选项(包括bootclasspath和javaagent)。
然后,我像往常一样运行caliper (当使用非指令插入的JRE时,它工作得很好),并且我一直得到以下异常
An exception was thrown from the benchmark code.
java.lang.RuntimeException: failed to start subprocess
at com.google.caliper.Runner.measure(Runner.java:278)
at com.google.caliper.Runner.runScenario(Runner.java:229)
at com.google.caliper.Runner.runOutOfProcess(Runner.java:378)
at com.google.caliper.Runner.run(Runner.java:97)
at com.google.caliper.Runner.main(Runner.java:423)
Caused by: java.io.IOException: Cannot run program "java" (in directory "extra/"): error=2, No such file or directory 我已经尝试确保$JAVA_HOME/bin/在$PATH中是第一个,尝试将$JAVA_HOME/bin/java符号链接到当前工作目录,但都无济于事。
有人有什么建议吗?我可能已经花了5个多小时来解决这个问题……
编辑
因此,我认为这可能是一个更广泛的问题,重点是仪表化的JRE。我运行了一个简单的测试,创建了一个只运行ls的ProcessBuilder。它在非指令插入的java上工作得很好,但是在指令插入的版本中失败了,出现了同样的错误(error=2)。有什么建议吗?
发布于 2016-02-11 01:40:38
问题不在于caliper,或者更广泛的仪表化JRE,而是我没有chmod +x jre/bin/*和chmod +x jre/lib/*。在那之后,这个问题就解决了。
https://stackoverflow.com/questions/35302679
复制相似问题