使用Caliper 0.5和仪表代码/ JRE

时间:2016-02-09 21:36:49

标签: java instrumentation caliper

披露:我对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。我运行了一个简单的测试,在那里我创建了一个只运行ProcessBuilder的{​​{1}}。它适用于非检测的java,但在检测版本中失败,并且具有相同类型的错误(ls)。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

问题不在于卡尺或更广泛的仪表化JRE,而在于我没有chmod +x jre/bin/*chmod +x jre/lib/*。之后,问题得到了解决。