当前位置: 首页>>技术教程>>正文


蚂蚁无法找到Javac,JAVA_HOME不会在Ubuntu上设置

, , , ,

问题描述

我的Ubuntu 10.04 i386服务器(无头)上有一个名为Hello的Android项目。它包含Android项目文件夹应具有的所有内容。我首先使用以下synax在Project文件夹中的bash中构建项目:

./android create project --target 5 --name HelloCompile --path ../../Projects/Hello --activity HelloActivity --package com.code.Hello

然后我尝试像这样用ant构建.apk:

ant debug

我收到此错误:

BUILD FAILED
/home/myusername/www/sdk/tools/ant/main_rules.xml:384: Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
It is currently set to "/usr/lib/jvm/java-6-openjdk/jre"

这让我非常困惑,因为在我运行ant debug之前,我运行:

export JAVA_HOME=/usr/lib/jvm/java-6-openjdk

我知道这是有效的,因为bash shell中的printenv返回:

JAVA_HOME=/usr/lib/jvm/java-6-openjdk

为了解决这个问题,请将这一行添加到我的/etc /environment文件中

export JAVA_HOME=/usr/lib/jvm/java-6-openjdk

也不能解决问题-我收到相同的错误。 Ubunut仍然认为/usr/lib/jvm/java-6-openjdk/jre是JAVA_HOME,这一点我没有做任何改变。怎么了?我在这个地方呆了很多小时。

最佳解决方法

您安装了JDK吗?

当您安装Ubuntu时,仅JRE被安装为默认软件包的一部分。不幸的是,Ubuntu的软件包管理将目录命名为目录,就好像JRE与JDK一起安装一样。即使JDK不存在,该目录也被命名为java-6-openjdk

请执行下列操作:

sudo apt-get install openjdk-6-jdk

它将JDK安装在同一目录中。

次佳解决方法

—在注意到输出中的一个小项后更新-

您已将JAVA_HOME设置为Java运行时环境的正确位置,这无疑会允许您运行Java程序,但不能开发它们。

将您的JAVA_HOME缩短为/usr/lib/jvm/java-6-openjdk(请注意删除尾随的jre)。之后,您的Ant包装器/编译器检测代码将不会感到困惑,因为它将指向Java开发环境的所在地,而不是嵌入式的相关Java运行时环境。

提供嵌入式Java运行时环境以确保您可以仅对核心Java产品(不包括编译器工具)进行测试。

—原始帖子如下—

查找命令javacJAVA_HOME无关,除了javac通常位于JAVA_HOME下的子目录中

您需要做的是修改PATH环境变量,使其包含Java可执行文件所在的目录。通常这样做是这样的

PATH=${PATH}:${JAVA_HOME}/bin
export PATH

但是根据您的设置,操作可能会略有不同。如果你这样做

ls ${JAVA_HOME}/bin

并且您看到一个javac可执行文件,那么上面对path变量的修改将可以工作,而无需对其进行更改。

第三种解决方法

正如Edwin Buck所说,请检查$ PATH中/usr /bin /目录中的/etc /alternatives /java软链接。在附加的JAVA_HOME变量之前正在读取它们。

那是我的问题:

ls -al /usr/bin/j* 
lrwxrwxrwx 1 root root    22 2012-05-07 13:26 /usr/bin/java -> /etc/alternatives/java
lrwxrwxrwx 1 root root    25 2011-05-12 19:45 /usr/bin/java_vm -> /etc/alternatives/java_vm
lrwxrwxrwx 1 root root    24 2011-05-01 05:22 /usr/bin/javaws -> /etc/alternatives/javaws
lrwxrwxrwx 1 root root    26 2011-05-12 19:45 /usr/bin/jcontrol -> /etc/alternatives/jcontrol
lrwxrwxrwx 1 root root    23 2011-04-26 02:24 /usr/bin/jexec -> /etc/alternatives/jexec

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/7274.html,未经允许,请勿转载。