JAVA_HOME没有指向JDK

问题描述 投票:29回答:16

我正在尝试按照有关如何使用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 ant environment-variables
16个回答
32
投票

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

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

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

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

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

这个对我有用。


0
投票

对于centos yum -y install java-1.7.0-openjdk-devel.x86_64

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


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

事情很有效。去搞清楚。


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

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

0
投票

在詹金斯的指导下,它抱怨道:

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

原因:无法找到JDK的任何开发工具包。

解:

请确保安装openjdk-devel软件包以及JDK-1.8 *版本并重新导出:#source~ / .bash_profile


24
投票

你安装了java ...

apt-get install default-jre

但不是JDK ......

apt-get install default-jdk

13
投票

这是设计的。你不能互换使用ant的java.home(这是一个java.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来指定在Javac任务中显式使用的java(请参阅Ant's Javac Task Documentation)。这样,在内部运行的Java环境Ant无关紧要,编译器总是被明确指定!


5
投票

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

使用ubuntu进行eclipse:

转到Window-> Preferences-> Ant-> Runtime->选择Ant_Home_Entries并单击添加外部jar然后在文件资源管理器中找到你的jdk(默认位于/ usr / lib / jvm /)和你的lib文件夹中jdk你会找到tool.jar。选择此项并单击“应用”。

尝试建立你的项目,事情应该工作!

注意:我没有长时间使用蚂蚁,但是如果有人被困在这上面,那么需要它用于ycsb couchbase工作负载生成器(http://www.couchbase.com/wiki/display/couchbase/Load+Generator+Setup)。


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)包含它。


2
投票

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

要更改环境变量click here

我将“;%JAVA_HOME%/ bin”添加到paths变量的末尾,并添加了一个新的“JAVA_HOME”变量,并将其值设置为我的JDK“C:\ Program Files \ Java \ jdk1.8.0_11”的位置。之后,我重新启动了我的Node.js命令提示符,它工作正常。

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


1
投票

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

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

...然后再试一次。


1
投票

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

sudo apt-get remove openjdk-6-*

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


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.