3

Windows 7 マシンで Cygwin を実行しており、スクリプト ファイルを使用して Java プログラムをバッチで実行しています。私の問題は次のとおりです。コマンドラインを介してCygwin / Linuxパスをファイルに渡そうとすると、Javaはすべてのスラッシュをバックスラッシュに変換します。

例えば:

java program $scratchname/path_to_folder/ filename_$i.txt

Java 内で、ディレクトリを取得し、ファイル名を追加してファイルを開きます。これは、Windows コマンド ラインを使用している限り、通常は問題なく動作します。ただし、Cygwin Java ではこれを次のように変換します。

home\scratch\path_to_folder

これはCygwinが好きではありません。

ファイルを開こうとすると、Java はデフォルトで Windows のパス規則を使用するように見えるため、バックスラッシュをスラッシュに置き換えるという単純な問題ではないと思います。これは、Cygwin が JVM の Windows インストールを指しているためだと思います。

Windows システムで Java に Cygwin / Linux パス名規則を使用させるにはどうすればよいですか?

4

1 に答える 1

5

Java は Windows プログラムであるため、Windows パスのみを認識します。Cygwin シェルから起動しても、それを変更することはできません。cygpathパスを前後に変換するために使用できます。

参考リンク:https ://cygwin.com/cygwin-ug-net/using-effectively.html

例:

  java -jar path/to/your-1.0.jar "$(cygpath -aw /home/YOUR_USER/path/to/file.txt)"

オプション:

  • a は絶対パスを提供します
  • w は Windows 形式を使用します
于 2013-07-09T04:06:34.997 に答える