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 安装。

如何强制 Java 在 Windows 系统上使用 Cygwin / Linux 路径名约定?

4

1 回答 1

5

Java 是一个 Windows 程序,因此只能理解 Windows 路径;从 Cygwin shell 启动它并不能改变这一点。您可以使用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 回答