我正在尝试跟随一个关于如何使用Ant构建和运行应用程序的教程。我已经按照所有步骤创建了构建文件,但是当我尝试运行Ant时,它会给我这个错误信息。
BUILD FAILED /home/bilal/tmp/ant/build.xml:19: 找不到javac编译器; com.sun.tools.javac.Main不在类路径上。 可能JAVA_HOME没有指向JDK。 当前设置为“/usr/lib/jvm/java-6-openjdk/jre”
有任何解决此问题的想法吗?
我正在尝试跟随一个关于如何使用Ant构建和运行应用程序的教程。我已经按照所有步骤创建了构建文件,但是当我尝试运行Ant时,它会给我这个错误信息。
BUILD FAILED /home/bilal/tmp/ant/build.xml:19: 找不到javac编译器; com.sun.tools.javac.Main不在类路径上。 可能JAVA_HOME没有指向JDK。 当前设置为“/usr/lib/jvm/java-6-openjdk/jre”
有任何解决此问题的想法吗?
将JAVA_HOME变量指向jdk安装目录,而不是jre。
你正在引用运行时环境,而不是开发工具包 —— 它找不到编译器,因为它不存在。
从你发布的那一行中,可以看出你正在使用open-jdk,只需删除末尾的jre即可:
export JAVA_HOME='/usr/lib/jvm/java-6-openjdk/'
您安装了 Java...
apt-get install default-jre
但并非 JDK...
apt-get install default-jdk
default-jdk
解决了我的问题。 - Mark Stosbergjava.home
(它是一个java.lang.System
属性)与操作系统环境中设置JAVA_HOME
的方式混用。你可能正在尝试使用来自不同属性层的根本不同值来确定Java编译器的位置,即java.home(来自Ant的Java内部)指向安装在<any_installed_java_pointed_to_by_ant>/jre
下的Java运行时环境,而JDK_HOME(来自操作系统环境)通常设置为<DOWNLOADED_AND_INSTALLED_JAVA_DEVELOPMENT_KIT>
。${env.JAVA_HOME}
在Ant中访问系统环境属性。 在Javac任务中显式指定要使用的java,将executable
属性设置为javac路径,并将fork
属性设置为yes(请参见Ant's Javac Task Documentation)。 这样,无论Ant运行在什么Java环境中,编译器总是清晰地指定!我知道这个问题很老,但是接受的答案已经不再适用了。由于这是谷歌搜索结果中的第一个链接,我将告诉你我如何解决这个问题。
对于在Ubuntu上使用eclipse:
进入“Window->Preferences->Ant->Runtime->选择Ant_Home_Entries”,然后点击“添加外部JAR文件”,找到你的JDK所在的位置(默认情况下在/usr/lib/jvm/),在JDK的lib文件夹中,你会找到tool.jar。选择它并单击"应用"。
尝试构建你的项目,事情应该能够正常工作!
注意:我很久没有使用ant了,但需要它来生成ycsb couchbase负载生成器(http://www.couchbase.com/wiki/display/couchbase/Load+Generator+Setup)。如果有人卡在这里,请参考。
看起来您当前指向的JAVA_HOME是/usr/lib/jvm/java-6-openjdk/jre
,这似乎是一个JRE而不是JDK。请尝试将JAVA_HOME设置为/usr/lib/jvm/java-6-openjdk
。
JRE不包含Java编译器,只有JDK(Java开发工具包)才包含它。
你上面的JAVA_HOME只指向JRE,它不包含编译器。请将你的JAVA_HOME设置为
/usr/lib/jvm/java-6-openjdk
...请重试。
对于CentOS,使用yum -y install java-1.7.0-openjdk-devel.x86_64命令安装Java开发包。
并更新JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk.x86-64。
sudo apt-get remove openjdk-6-*
确保JAVA_HOME和CLASSPATH没有被设置为任何值,因为那并不是实际的问题。
我只是将JDK\lib文件夹中的tools.jar文件复制到JRE\lib文件夹中。从那时起,它就像一位冠军一样工作。