问题描述
我的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产品(不包括编译器工具)进行测试。
—原始帖子如下—
查找命令javac
与JAVA_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