代码之家  ›  专栏  ›  技术社区  ›  Andy Evans

cygwin有java sdk吗?

  •  5
  • Andy Evans  · 技术社区  · 15 年前

    cygwin有java sdk吗?

    2 回复  |  直到 15 年前
        1
  •  2
  •   Peter Lawrey    15 年前

    如果有一个原生的cygwin实现,它使用cygwin文件系统和X-windows进行显示,那就太好了,不幸的是,我不知道有这样的版本。我认为移植OpenJDK也是一项相当大的工作,但我没有尝试。

        2
  •  0
  •   philwalk    9 年前

    尽管cygwin没有java sdk,但如果您愿意为各种问题提供解决方法,可以让Windows jdk正常工作:

    • 文件路径分隔符是反斜杠而不是斜杠
    • 路径条目分隔符是分号而不是冒号

    根据我的经验,第一颗子弹是迄今为止最大的问题,尽管这三颗子弹有点相互关联。分离机往往照顾自己作为解决第一个问题的副作用。

    事实证明,在windows下,很少需要在文件路径字符串中使用反斜杠。我遇到的唯一例外是在为需要反斜杠的程序生成命令行时将文件路径字符串作为参数传递(例如。,命令行). 这个java.io文件以及java.nio文件所有包都接受正斜杠,因此,对于这一点,Microsoft开发库也接受正斜杠。大多数拒绝带有正斜杠的路径的程序(IMHO)很可能是无偿的。

    所以,真正的问题是“/cygdrive/c”没有被java.io.File文件指的是“C:\”。

    换句话说,以下文件测试将返回false:

    new java.io.File("/cygdrive/c").exists()
    

    鉴于这是预期的:

    new java.io.File("c:/").exists()
    

    最新版本的Windows现在支持通用符号链接,提供了一种设置cygwin开发环境的方法,在该环境中不使用驱动器号。使用整个文件系统的统一视图(所有文件都显示在“/”下,默认驱动器号是不变的,例如C:),可以从文件路径字符串中丢弃驱动器号。换句话说,您希望能够将“c:/”称为“/”。这可以通过多种方式实现,一种是将c:/下面的其他驱动器进行符号链接,例如:

    $ ln -sFT d:/ c:/d
    

    new java.io.File("/d").isDirectory // returns true, as expected