披露:我对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
)。有什么建议吗?
答案 0 :(得分:0)
问题不在于卡尺或更广泛的仪表化JRE,而在于我没有chmod +x jre/bin/*
和chmod +x jre/lib/*
。之后,问题得到了解决。