2012-06-28 83 views
29

我正在尝试关注如何使用ant构建和运行应用程序的教程。我已经按照所有步骤创建了构建文件,但是当我尝试运行ant时,它给了我这个错误。JAVA_HOME不指向JDK

BUILD FAILED /home/bilal/tmp/ant/build.xml:19: 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"

任何想法如何解决这个问题?

回答

24

JAVA_HOME变量指向一个JDK安装,不JRE

您正在引用运行时环境,而不是开发工具包 - 它找不到编译器,因为它不在那里。

从您发布的线,其中规定你有开放的JDK你可以删除JRE在结束:

export JAVA_HOME='/usr/lib/jvm/java-6-openjdk/' 
+0

以及如何找到jdk安装的位置? – comatose

+0

你在哪里安装它? – NimChimpsky

+0

:)以及它是预先安装在我的mac,有没有像哪个java或类似的东西,这可以告诉我它在哪里安装的命令? – comatose

3

看起来你正在指向JAVA_HOME到这似乎是一个JRE不/usr/lib/jvm/java-6-openjdk/jre一个JDK。尝试将JAVA_HOME设置为/usr/lib/jvm/java-6-openjdk

JRE不包含Java编译器,只有JDK(Java Developer Kit)包含它。

1

您上面的JAVA_HOME只指向JRE,它不包含编译器。将您的JAVA_HOME设置为

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

...并重试。

+0

其他人已经给出了这个答案,你只是重复其他人。 – Ali

12

这是设计。您不能在操作系统环境中使用蚂蚁的java.home(这是java.lang.System属性)与JAVA_HOME的设置互换。您可能试图断言Java编译器的位置与来自不同属性层的根本不同的值 - 即java.home(来自Ant's Java内部)指向Java运行时环境<any_installed_java_pointed_to_by_ant>/jre,而JDK_HOME(来自OS环境)通常设置为<DOWNLOADED_AND_INSTALLED_JAVA_DEVELOPMENT_KIT>

见我的问题和答案在这里了解更多详情:Where does Ant set its 'java.home' (and is it wrong) and is it supposed to append '/jre'?

的解决方案是通过使用${env.JAVA_HOME}访问Ant内的系统环境属性。通过将executable属性设置为javac路径并将fork属性设置为yes(请参阅Ant's Javac Task Documentation),指定在Javac任务中显式使用哪个Java。这样,无论在什么Java环境中运行Ant,编译器总是清楚的指定!

+2

这应该被标记为解决方案 – quinestor

+3

我不会说这是解决方案。它解释了发生了什么,而不是如何解决它。我有同样的问题蚂蚁它是蚂蚁,而不是我,似乎是交替使用java.home和JAVA_HOME。我的JAVA_HOME是正确的,但Ant似乎正在追加/ jre然后抱怨它! –

+0

@Dave Rager:蚂蚁正在按照*设计*。 – ingyhere

24

你安装java的...

apt-get install default-jre 

但不是JDK ...

apt-get install default-jdk 
+0

@ingyhere按照这里的建议安装'default-jdk'解决了我的问题。 –

+0

@Mark Stosberg首先,我删除了我以前的评论,因为它意在跟踪评论到另一个答案。对于后人来说,此页面上的背景并不清楚。所以,这个想法是,Ant应该在JRE内运行,而不管。但是,要编译应用程序,需要JDK。 Ant Javac任务应该(或者至少以前)默认通过嗅探内部属性来查找Java编译器(javac)。所以,如果没有明确指定Javac“可执行”属性,它可能会找到错误的东西。安装JDK是先决条件,当然,没有问题。 – ingyhere

1

我有一个类似的问题,原来的问题是有两个版本OpenJDK的7 &。答案来自于R-高层在Ubuntu论坛(http://ubuntuforums.org/showthread.php?t=1977619)---刚刚卸载版本6:

sudo apt-get remove openjdk-6-*

确保JAVA_HOME和CLASSPATH都没有设置任何东西,因为这是不实际的问题。

1

我正在使用Windows 7并且一直在努力解决同一问题。我通过更改我的环境变量来修复它。

更改环境变量click here

我加了“;%JAVA_HOME%/ BIN”到的变量路径的终点,并增加了新的“JAVA_HOME”变量,并将其值设置为我的JDK“C的位置:\ Program Files \ Java \ jdk1.8.0_11“。之后,我重新启动了我的Node.js命令提示符并工作。

请注意,您的JDK目录可能与我的不同。也取决于您的设置,您可能需要在设置环境变量后重新启动计算机。

0

为CentOS荫-y安装Java-1.7.0-的openjdk-devel.x86_64

和更新JAVA_HOME =/usr/lib中/ JVM/java的1.7.0-openjdk.x86-64

+1

尝试格式化您的命令,以便阅读。 – DanM7

0

当试图在基本操作系统Luna(基于Ubuntu 12.04 LTS源代码)上使用Meteor 1.0运行Android模拟器时,遇到了此问题。

安装了openjdk-6-jdk,以及jre。最后,不期望任何的成功,我想:

sudo apt-get remove openjdk-6-* 

这导致了充分预期的错误,所以我遵循了

sudo apt-get install openjdk-6-jdk 

和事情的来龙去脉。去搞清楚。

4

我知道这个问题是旧的,但接受的答案不再工作,因为这是谷歌搜索的拳头链接我会告诉我如何解决这个问题。

月食使用Ubuntu:

去窗口 - >首选项 - > 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)。

0

在Ubuntu 14.04中,我发现两个部分,以解决问题:

  1. 从环境变量删除/jre。对我来说:export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/
  2. 安装JDK和JRE的:sudo apt-get install default-jdk
1

我只是复制工具。jar文件从JDK \ lib文件夹复制到JRE \ lib文件夹。从那时起,它就像一个冠军。

+0

这不提供问题的答案。要批评或要求作者澄清,在他们的帖子下留下评论 - 你总是可以评论你自己的帖子,一旦你有足够的[声誉](http://stackoverflow.com/help/whats-reputation),你会能够[评论任何帖子](http://stackoverflow.com/help/privileges/comment)。 - [来自评论](/ review/low-quality-posts/10687279) – mjp66

+0

@ mjp66,你有没有试过。它没有提供回答这个问题?怎么来的?我们不需要澄清任何一个曾经面临问题的作者都可以澄清我的信仰。什么是足够的声誉? –

+0

这是最好的答案!它的工作,并不需要我不知道我应该写在哪里的命令 – Maude

0

一旦你更新作为回答规定的JAVA_HOME路径,你应该这样做:

$source ~/.bashrc 

这将刷新的.bashrc显示在$ JAVA_HOME更新的路径,当你再次检查。

0

执行:

$ export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-3.b16.el6_9.x86_64 

,并设置操作系统环境:

vi /etc/environment 

然后按照下列步骤操作:

  1. 按i
  2. 粘贴

    JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-3.b16.el6_9.x86_64 
    
  3. 按esc

  4. 新闻:WQ
1

我遇到了在RHEL这个问题,我的 “JAVA_HOME =/usr/lib目录/ JVM/JAVA-1.8.0-OpenJDK的”(这是一个符号链接)和蚂蚁抱怨。

MY此解决方案是使用在JAVA_HOME真实JDK路径,如:

JAVA_HOME =/usr/lib中/ JVM/java的1.8.0-的openjdk-1.8.0.161-0.b14.el7_4 .x86_64

它适合我。

相关问题