我正在尝试遵循有关如何使用 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”
任何想法如何解决这个问题?
我正在尝试遵循有关如何使用 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”
任何想法如何解决这个问题?
使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
这是设计使然。您不能将 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 环境,编译器总是被明确指定!
我知道这个问题很老,但接受的答案不再起作用,因为这是谷歌搜索的第一个链接,我会告诉我如何解决这个问题。
对于使用 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 ),我需要它这。
看起来您当前指向的 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)包含它。
我正在使用 Windows 7,并且遇到了同样的问题。我通过更改我的环境变量来修复它。
要更改您的环境变量,请单击此处
我将“;%JAVA_HOME%/bin”添加到路径变量的末尾,并添加了一个新的“JAVA_HOME”变量并将其值设置为我的 JDK“C:\Program Files\Java\jdk1.8.0_11”的位置。之后我重新启动了我的 Node.js 命令提示符,它工作了。
请注意,您的 JDK 目录可能与我的不同。此外,根据您的设置,您可能需要在设置环境变量后重新启动计算机。
您上面的 JAVA_HOME 仅指向不包含编译器的 JRE。将您的 JAVA_HOME 设置为
/usr/lib/jvm/java-6-openjdk
...然后再试一次。
我遇到了类似的问题,结果发现问题出在 OpenJDK 6 和 7 版本上。答案来自 ubuntu 论坛上的 r-senior ( http://ubuntuforums.org/showthread.php?t=1977619 ) --- 只需卸载版本 6:
sudo apt-get remove openjdk-6-*
确保没有将 JAVA_HOME 和 CLASSPATH 设置为任何内容,因为这实际上不是问题。
对于 centos yum -y 安装 java-1.7.0-openjdk-devel.x86_64
并更新 JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk.x86-64
我刚刚将 tools.jar 文件从 JDK\lib 文件夹复制到 JRE\lib 文件夹。从那时起,它就像一个冠军。
在基本 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
一切都奏效了。去搞清楚。
在 Ubuntu 14.04 上,我找到了解决问题的两个部分:
/jre
从环境变量中删除。为了我:export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/
sudo apt-get install default-jdk
按照答案中的说明更新 JAVA_HOME 路径后,您应该执行以下操作:
$source ~/.bashrc
当您再次检查时,这将刷新 bashrc 在 $JAVA_HOME 中显示更新的路径。
执行:
$ export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-3.b16.el6_9.x86_64
并设置操作系统环境:
vi /etc/environment
然后按照以下步骤操作:
粘贴
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-3.b16.el6_9.x86_64
按 esc
我在 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
这个对我有用。
在詹金斯下,它抱怨如下:
/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