32

我正在尝试遵循有关如何使用 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”

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

4

16 回答 16

37

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

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

从您发布的行中,说明您有 open-jdk,您可以在最后删除 jre:

export JAVA_HOME='/usr/lib/jvm/java-6-openjdk/'
于 2012-06-28T13:36:20.997 回答
25

你安装了java ...

apt-get install default-jre

但不是JDK ...

apt-get install default-jdk
于 2013-08-22T19:25:28.963 回答
13

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

有关更多详细信息,请参阅我的问题和答案:Ant 在哪里设置它的“java.home”(这是错误的),它应该附加“/jre”吗?

解决方案是在 Ant 中使用${env.JAVA_HOME}. executable通过将属性设置为 javac 路径并将fork属性设置为 yes ,指定在 Javac 任务中显式使用哪个 java (请参阅Ant 的 Javac 任务文档)。这样一来,无论 Ant 内部运行什么 Java 环境,编译器总是被明确指定!

于 2013-05-14T03:44:20.260 回答
5

我知道这个问题很老,但接受的答案不再起作用,因为这是谷歌搜索的第一个链接,我会告诉我如何解决这个问题。

对于使用 ubuntu 的 Eclipse:

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

尝试构建您的项目,事情应该会奏效!

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

于 2015-01-07T11:11:59.733 回答
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)包含它。

于 2012-06-28T13:38:38.477 回答
2

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

要更改您的环境变量,请单击此处

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

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

于 2014-07-25T16:19:22.227 回答
1

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

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

...然后再试一次。

于 2012-06-28T13:39:32.290 回答
1

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

sudo apt-get remove openjdk-6-*

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

于 2013-10-17T05:57:15.340 回答
1

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

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

于 2014-09-05T01:56:05.777 回答
1

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

于 2015-12-26T06:49:04.160 回答
0

在基本 OS 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

一切都奏效了。去搞清楚。

于 2014-11-07T10:11:29.013 回答
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
于 2015-01-07T15:42:19.620 回答
0

按照答案中的说明更新 JAVA_HOME 路径后,您应该执行以下操作:

$source ~/.bashrc

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

于 2016-01-25T19:08:53.733 回答
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. 按我
  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
于 2017-09-18T05:19:59.110 回答
0

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

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

JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64

这个对我有用。

于 2018-03-01T04:57:17.857 回答
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

于 2019-02-16T20:41:14.280 回答