我正在尝试按照有关如何使用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”
有任何想法如何解决此问题?
答案 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.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(请参阅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上,我找到了解决问题的两个部分:
/jre
。对我来说:export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/
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
然后按照以下步骤操作:
粘贴
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-3.b16.el6_9.x86_64
按esc
答案 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