运行 Java Cygwin 上的程序 - 找不到类路径

Running Java Program on Cygwin - classpath not found

我有一个简单的 Java 程序可以打印出我的 class 路径。文件夹结构如下:

[~/tmp/bin]# ls
launcher/  PrintClasspath.class*

以及相同 class 下一层的副本。

[~/tmp/bin/launcher]# ls
PrintClasspath.class*

当我跳转到我的 ~/tmp 目录和 ~/tmp/bin 目录中的 运行 PrintClasspath 时,我可以 运行 程序就好了,说明./bin 作为 class 路径。

[~/tmp]# java -cp "./bin" PrintClasspath
/C:/Cygwin/home/user/tmp/bin/

或者我可以 运行 我嵌套在 ~/tmp/bin/launcher 目录中的同一个文件,如果我按如下方式编辑 class 路径:

[~/tmp]# java -cp "./bin/launcher" PrintClasspath
/C:/Cygwin/home/user/tmp/bin/launcher/

但是当我尝试坐在我的 ~/tmp 目录中,并尝试 运行 我的 class 在 ~/tmp/bin/launcher 目录中 ./bin 作为我的class路径并通过以下方式限定 class 所在的位置:

[~/tmp]# java -cp "./bin" launcher.PrintClasspath
Error: Could not find or load main class launcher.PrintClasspath

它失败了。我在我的 Linux 框上进行了 运行 相同的测试,并且在给出 classpath 多个目录后,确定 class 位于子目录中的位置工作正常.

我最初认为这是一个 Windows/Cygwin 细微差别,但我在 Windows 命令提示符下尝试了相同的练习,结果相同。我缺少什么 here.do 我只需要 运行 我的 Windows Java 程序具有完全合格的 class 路径?

已解决:当使用 Java 的 Windows 版本在 Cygwin 中设置类路径时,您必须使用带有选项 -wpcygpath 实用程序来转换 unix Windows 路径的样式路径。

[~/tmp]# java -cp `cygpath -wp ./bin` launcher.PrintClasspath
/C:/Cygwin/home/user/tmp/bin/

(通过 this

这不是答案。我还不能发表评论。我想指出,这帮助我解决了 运行 javac -cp foo:bar/none 在 Mac OS 上工作的问题。在 windows 上的 cygwin 中,它不起作用,给出了多个关于在 bar/none 中找不到项目 xxxx 的错误。 xxxx 已在 bar/none 中编译。使用 cygpath -wp foo:bar/none 解决了我的问题。示例

javac -cp `cygpath -wp foo:bar/none` -d out/whatever/there src/*.java