我有一个简单的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程序吗?
答案 0 :(得分:1)
答案 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