0

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

Windows プログラムがコマンド ライン引数として渡された長いパスを正しく処理することを期待する必要がありますか? それとも、長いパスを検出して\\?\プレフィックスを追加するのは呼び出し元の責任ですか?

またはそれほど一般的ではありません: コマンド ライン ライブラリまたはコマンド ライン ライブラリにバグはありjava.exeますか?

4

1 に答える 1

0

ほとんどのプログラムは単純にファイル名を取得し、そのまま API 関数に渡しますCreateFile()。したがって、その場合、長いファイル名を検出し、それに応じてプレフィックスを付けてから渡すのは、実際には呼び出し元の責任です。

于 2012-08-24T20:04:37.377 に答える