【问题标题】:How can I set my Cygwin PATH to find javac?如何设置我的 Cygwin PATH 以查找 javac?
【发布时间】:2011-06-22 13:47:21
【问题描述】:

我有一个安装了最新 Java 编译器的 Windows 7 系统。我也有最新的 Cygwin。我想使用 Cygwin 的 shell 中的 Java 编译器。我在 Cygwin 中编辑了 PATH 变量如下:

export PATH=$PATH:"/cygdrive/C/Program\ Files/Java/jdk1.6.0_23/bin/"

我可以在上面的目录中看到javac 二进制文件,但是当我尝试编译我的 *.java 文件时,我得到:

javac command not found

我在设置这样的 PATH 变量时做错了什么吗?我必须做其他事情吗?我是 Java 新手,对 cygwin 不是很熟悉。

【问题讨论】:

    标签: java path cygwin javac


    【解决方案1】:

    当你用双引号写它时,你不需要用\转义空格

    export PATH=$PATH:"/cygdrive/C/Program Files/Java/jdk1.6.0_23/bin/"
    

    当然这也有效:

    export PATH=$PATH:/cygdrive/C/Program\ Files/Java/jdk1.6.0_23/bin/
    

    【讨论】:

    • 是否有像 windows 环境变量这样的永久位置,我可以简单地保存文件夹位置,而不是创建 PATH 变量?谢谢!
    • 您可以将该命令添加到文件 ~/.bashrc 中,然后在您启动 cygwin 时它将始终加载。
    【解决方案2】:

    如果您仍然发现使用默认的错误 Java 版本 (1.7) 而不是您的 Java 主目录,那么您只需更改 PATH 变量的顺序以在您的 Windows 之前设置 JAVA_HOME\bin PATH 变量中的目录,保存并重新启动 cygwin。对其进行测试以确保一切正常。它不应该有任何不利影响,因为您希望自己的 Java 版本覆盖 Windows 附带的默认值。祝你好运!

    【讨论】:

      【解决方案3】:

      为了让@johanvdw 的有用评论更加突出:

      如果您想确保在 cygwin 启动时始终知道您的 javac 文件路径,您可以编辑您的 .bash_profile 文件。在此示例中,您将在文件中的某处添加export PATH=$PATH:"/cygdrive/C/Program Files/Java/jdk1.6.0_23/bin/"

      当 Cygwin 启动时,它会在 PATH 和这个目录中搜索要运行的可执行文件。

      【讨论】:

        【解决方案4】:

        Java 二进制文件可能位于“Program Files”或“Program Files (x86)”下:这些空格可能会影响行为。

        为了正确设置环境变量,我建议在开始之前收集一些信息:

        • 打开 DOS shell(在“运行”框中键入 cmd)转到 C:\
        • 键入“dir /x”并记下“Program Files *”文件夹的 DOS 名称(带 ~)

        Cygwin 配置:

        进入C:\cygwin\home\,然后打开.bash_profile并添加以下两行(方便定制以匹配您实际的JDK路径)

        export JAVA_HOME="/cygdrive/c/PROGRA~1/Java/jdk1.8.0_65"
        export PATH="$JAVA_HOME/bin:$PATH"
        

        现在从 Cygwin 发布

        javac -version

        检查配置是否成功。

        【讨论】:

          【解决方案5】:

          尽管所有其他答案在技术上都是正确的,但我建议您将自定义路径添加到 PATH 的开头,而不是末尾。这样,它将是第一个寻找的地方,而不是最后一个:

          添加到~/.bash_profile的底部:

          export PATH="/cygdrive/C/Program Files/Java/jdk1.6.0_23/bin/":$PATH
          

          这样,如果您有多个javajavac,它将使用您首先提供的那个。

          【讨论】:

            猜你喜欢
            • 2013-09-12
            • 2012-09-09
            • 2015-11-03
            • 1970-01-01
            • 2011-01-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多