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

时间:2016-07-20 18:37:58

标签: java linux windows cygwin classpath

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

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

同一个班级的副本又一个级别。

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

当我跳到我的~/tmp目录并在我的PrintClasspath目录中运行~/tmp/bin时,我可以正常运行该程序,并将./bin作为类路径。< / p>

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

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

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

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

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

它失败了。我已经在我的Linux机器上运行相同的测试,并且在给出一个类路径多个目录后,该类在子目录中的位置正常工作。

我最初认为这是一个Windows / Cygwin的细微差别,但我在Windows命令提示符和同样的结果中尝试了相同的练习。我在这里缺少什么。我只需要使用完全限定的类路径运行我的Windows Java程序吗?

2 个答案:

答案 0 :(得分:1)

解决:使用Windows版本的Java在Cygwin中设置类路径时,必须使用带有选项cygpath的{​​{1}}实用程序将unix样式路径转换为Windows路径。

-wp

(通过this

答案 1 :(得分:-1)

这不是答案。我还不能发表评论。我想指出,这对我在Mac OS上运行javac -cp foo:bar / none的问题有所帮助。在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