開示:私はJavaにあまり詳しくないので、以下で真実でないことがあれば指摘してください
インストルメント化された JRE を使用して、インストルメント化されたコードの Caliper でいくつかのマイクロベンチマークを実行しようとしています。
JAVA_HOME
インストルメント化された JRE を指すように設定しました (これ$JAVA_HOME/bin/java
が適切です)。$JAVA_TOOL_OPTIONS
(bootclasspath と javaagent を含む) を使用してさまざまなオプションをセットアップします。
次に、通常どおりキャリパーを実行します (インストルメント化されていない 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
)。助言がありますか?