披露:我对Java不是很熟悉,所以如果下面有任何不真实的地方,请指出
我正在尝试使用 Caliper 为检测代码运行一些微基准测试,并使用检测的 JRE。
我将 my 设置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
只运行ls
. 它适用于非仪器化的 java,但对于仪器化的版本则失败,并出现相同类型的错误 ( error=2
)。有什么建议么?