【问题标题】:unable to run javac on Ubuntu [closed]无法在 Ubuntu 上运行 javac [关闭]
【发布时间】:2012-02-10 11:38:49
【问题描述】:

我正在尝试在 Ubuntu 终端上运行 javac。但我得到以下信息:

 $ javac
 The program 'javac' can be found in the following packages:
 * openjdk-6-jdk
 * ecj
 * gcj-4.4-jdk
 * gcj-4.6-jdk
 * gcj-4.5-jdk
 * openjdk-7-jdk
 Try: sudo apt-get install <selected package>

jdk 已经安装并运行 sudo apt-get install openjdk-6-jdk0 upgraded, 0 newly installed, 0 to remove and 322 not upgraded.

我的jdk安装在/usr/lib/jvm/java-6-open-jdk;我能够从 Eclipse 编译和运行一个 java 程序。但是我在使用终端时遇到了上述问题。

【问题讨论】:

  • javac 在你的路径上吗?你从 echo $PATH 和 echo $JAVA_HOME 得到什么输出
  • 它不会直接出现在您的路径上。在 ubuntu 中有一个双重符号链接 (/usr/bin),首先到 /etc/alternatives/java,然后从那里到它实际所在的位置。如果你回显 $PATH,你只会得到常规的二进制目录,如 /usr/bin 等。
  • 但如果它不在 PATH 上,我会期待“找不到命令”之类的东西。
  • Ubuntu 会尝试帮助您找到当前未找到的命令。
  • 正如 Dave Newton 所说,Ubuntu 有一个它知道的应用程序数据库,如果有兴趣,可以查看文件夹 /usr/share/command-not-found

标签: java ubuntu javac


【解决方案1】:

javac 二进制文件(可能还有其他 java 二进制文件)不在您用户的 $PATH 环境变量中。有几种方法可以解决这个问题:

  1. /usr/lib/jvm/java-6-open-jdk/bin 添加到用户的$PATH 环境变量中。您可以通过在用户的.bash_profile 中添加类似于以下内容的行来做到这一点:

    export PATH=${PATH}:/usr/lib/jvm/java-6-open-jdk/bin

    您必须重新启动终端会话才能使其生效。

  2. 从已经是路径一部分的某个目录创建指向 Java 二进制文件的符号链接(例如 /usr/bin

    sudo ln -s /usr/lib/jvm/java-6-open-jdk/bin/java /usr/bin/
    sudo ln -s /usr/lib/jvm/java-6-open-jdk/bin/javac /usr/bin/

    顺便说一句:/usr/lib/jvm/java-6-open-jdk/bin 中还有其他几个 java 可执行文件。我在上面展示了javajavac 的符号链接命令。您应该为您可能想要使用的任何其他可执行文件运行类似的命令。

  3. 直接在命令行使用全限定路径:

    $ /usr/lib/jvm/java-6-open-jdk/bin/javac

更新:

显然,对于这个问题有一个优雅但特定于 Ubuntu 的解决方案。在 Ubuntu 系统上,使用update-java-alternatives

【讨论】:

  • 谢谢。它解决了我的问题。 ;P 奇怪的是它一开始并没有说“找不到命令”。
  • 您可以运行update-java-alternatives 来选择您想要的实现,而不是手动创建符号链接(java 和 javac 可能不是您需要的唯一可执行文件)。
  • @Vincent Zoonekynd:感谢您的提示。我已经更新了我的答案。
  • 你能进一步解释一下特定于 Ubuntu 的替代方案吗?我很想运行它! (迄今为止也感谢您的帮助!)
猜你喜欢
  • 2016-10-14
  • 1970-01-01
  • 2022-06-12
  • 2022-01-23
  • 1970-01-01
  • 2012-09-27
  • 2019-07-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多