我的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的事实。出了什么问题?我已经在这里工作了太多时间。
答案 0 :(得分:77)
你安装了JDK吗?
安装Ubuntu时,只安装JRE作为默认包的一部分。不幸的是,Ubuntu的软件包管理将目录命名为JRE与JDK一起安装。即使JDK不存在,该目录也会命名为java-6-openjdk
。
执行以下操作:
sudo apt-get install openjdk-6-jdk
它将JDK安装在同一目录中。
答案 1 :(得分:10)
---在注意到输出中的一个小项目后更新---
您已将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
您需要做的是修改PATH=${PATH}:${JAVA_HOME}/bin
export PATH
环境变量以包含Java可执行文件所在的目录。通常情况下这样做
ls ${JAVA_HOME}/bin
但根据您的设置,可能会略有不同。如果你这样做
{{1}}
并且您看到了一个javac可执行文件,然后路径变量的上述修改将无需更改即可使用。
答案 2 :(得分:2)
正如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
答案 3 :(得分:0)
更改JAVA_HOME和PATH是不够的。
安装所需的Java JDK版本(Java DEVELOPMENT Kit,而不仅仅是Java Runtime Environment JRE)后,使用sudo update-alternatives --config java
更改首选版本。如果您使用的是Ubuntu,那么您可能已经安装了1.6和1.7,并且可以在PPA中使用1.8(尽管我找不到1.8的PPA并且不老)。