私の Java プログラムでは、コマンド ライン ライブラリを使用して Java プロセスをフォークしています。これは、呼び出しで渡す JAR ファイルのファイル パスjava.exe -jar
が Windows の 260 文字のパス長制限を超えると、(プログラムの使用方法によっては) 失敗します。(エラー メッセージの後にパス名が続きます。) JAR ファイル名にプレフィックスをError: Unable to access jarfile
(手動で) 追加することにより、Java 呼び出しを機能させることができます。\\?\
これで 1 つの特定の問題インスタンスが解決されますが、これは一般的に正しいアプローチですか?
Windows プログラムがコマンド ライン引数として渡された長いパスを正しく処理することを期待する必要がありますか? それとも、長いパスを検出して\\?\
プレフィックスを追加するのは呼び出し元の責任ですか?
またはそれほど一般的ではありません: コマンド ライン ライブラリまたはコマンド ライン ライブラリにバグはありjava.exe
ますか?