JAVA_HOME没有指向JDK

时间:2012-06-28 13:34:38

标签: java ant environment-variables

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

  

建立失败   /home/bilal/tmp/ant/build.xml:19:找不到javac编译器;   com.sun.tools.javac.Main不在类路径上。   也许JAVA_HOME并没有指向JDK。   它目前设置为“/ usr / lib / jvm / java-6-openjdk / jre”

有任何想法如何解决此问题?

16 个答案:

答案 0 :(得分:29)

JAVA_HOME 变量指向 jdk 安装,而不是 jre

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

从你发布的那一行开始,你知道你有open-jdk,你可以在结尾删除jre:

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

答案 1 :(得分:24)

您安装了 java ...

apt-get install default-jre

但不是 JDK ......

apt-get install default-jdk

答案 2 :(得分:13)

这是设计的。您不能将ant java.homejava.lang.System属性)与OS环境中JAVA_HOME的设置方式互换使用。您可能试图使用来自不同属性层的基本不同的值来断言Java编译器的位置 - 即java.home(来自Ant的Java内部)指向<any_installed_java_pointed_to_by_ant>/jre的Java运行时环境,而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无关紧要,编译器总是被明确指定!

答案 3 :(得分:5)

我知道这个问题已经过时但是接受的答案不再适用了,因为这是谷歌搜索的第一个链接,我将告诉我如何解决这个问题。

使用ubuntu进行eclipse:

转到Window-&gt; Preferences-&gt; Ant-&gt; Runtime-&gt;选择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)。

答案 4 :(得分:3)

看起来您当前正在将JAVA_HOME指向/usr/lib/jvm/java-6-openjdk/jre,它似乎是JRE而不是JDK。尝试将JAVA_HOME设置为/usr/lib/jvm/java-6-openjdk

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

答案 5 :(得分:2)

我使用的是Windows 7并且遇到了同样的问题。我通过更改环境变量来修复它。

更改环境变量click here

我添加了#34 ;;%JAVA_HOME%/ bin&#34;到路径变量的末尾并添加了一个新的&#34; JAVA_HOME&#34;变量并将其值设置为我的JDK&#34; C:\ Program Files \ Java \ jdk1.8.0_11&#34;的位置。之后,我重新启动了我的Node.js命令提示符,它运行良好。

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

答案 6 :(得分:1)

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

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

...然后再试一次。

答案 7 :(得分:1)

我遇到了类似的问题,原来问题是版本6和版本都是OpenJDK的7个。答案来自ubuntu论坛上的r-senior(http://ubuntuforums.org/showthread.php?t=1977619)---只需卸载版本6:

sudo apt-get remove openjdk-6-*

确保JAVA_HOME和CLASSPATH未设置为任何内容,因为这实际上不是问题。

答案 8 :(得分:1)

我刚刚将JDK \ lib文件夹中的tools.jar文件复制到JRE \ lib文件夹。从那时起,它就像一个冠军。

答案 9 :(得分:1)

我在rhel中遇到过这个问题,我的“JAVA_HOME = / usr / lib / jvm / java-1.8.0-openjdk”(这是一个符号链接),而且ant抱怨。

我的解决方案是在JAVA_HOME中使用真正的jdk路径,例如:

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

它对我有用。

答案 10 :(得分:0)

for centos yum -y install java-1.7.0-openjdk-devel.x86_64

并更新JAVA_HOME = / usr / lib / jvm / java-1.7.0-openjdk.x86-64

答案 11 :(得分:0)

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

安装了openjdk-6-jdk,以及jre。最后,我没想到会有任何成功,我试过:

sudo apt-get remove openjdk-6-*

这导致完全预期的错误,所以我跟进了

sudo apt-get install openjdk-6-jdk
事情很有效。去图。

答案 12 :(得分: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

答案 13 :(得分:0)

按照答案中的说明更新JAVA_HOME路径后,您应该这样做:

{{1}}

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

答案 14 :(得分: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

答案 15 :(得分:0)

在詹金斯看来,它像:

/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/看起来像不是JDK目录

原因:找不到用于JDK的任何开发套件。

解决方案:

请确保与您的JDK-1.8 *版本一起安装 openjdk-devel 软件包,并使用以下代码重新导出:#source〜/ .bash_profile