【问题标题】:Running Java Program on Cygwin - classpath not found在 Cygwin 上运行 Java 程序 - 找不到类路径
【发布时间】:2016-11-24 02:36:43
【问题描述】:

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

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

还有一个同级别的副本。

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

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

[~/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 程序吗?

【问题讨论】:

    标签: java linux windows cygwin classpath


    【解决方案1】:

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

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

    (通过this

    【讨论】:

      【解决方案2】:

      这不是答案。我还不能发表评论。我想指出,这帮助我解决了在 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-12
        • 1970-01-01
        • 2017-08-13
        • 2013-12-17
        • 2016-02-04
        相关资源
        最近更新 更多