JAVA_HOME没有指向JDK

com*_*ose 31 java ant environment-variables

我正在尝试按照有关如何使用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"

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

Nim*_*sky 33

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

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

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

export JAVA_HOME='/usr/lib/jvm/java-6-openjdk/'
Run Code Online (Sandbox Code Playgroud)

  • 我执行此操作后导出JAVA_HOME =/usr/lib/jvm/java-6-openjdk /它仍然会抛出相同的错误,声明它当前设置为"/ usr/lib/jvm/java-6-openjdk/jre" (18认同)
  • 这被标记为解决方案,但它没有提供解决方案. (14认同)
  • 这个答案没有给出解决方案,为什么它被接受和赞成? (9认同)
  • 它已经在错误消息中告诉你,当前路径是"/ usr/lib/jvm/java-6-openjdk/jre".只需删除末尾的"jre". (5认同)
  • @NimChimpsky我刚刚根据ingyhere的答案解决了Ubuntu12.04中的问题.Changin JAVA_HOME没有解决问题,因为ant不会使用该值,alawys显示它指向jre子文件夹 (2认同)

小智 24

你安装了java ...

apt-get install default-jre
Run Code Online (Sandbox Code Playgroud)

但不是JDK ......

apt-get install default-jdk
Run Code Online (Sandbox Code Playgroud)


ing*_*ere 13

这是设计的.您不能将OS java.home(可以是java.lang.System属性)与JAVA_HOMEOS环境中的设置方式互换使用.您可能尝试使用来自不同属性层的基本不同的值来断言Java编译器的位置 - 即java.home(来自Ant的Java内部)指向Java运行时环境,<any_installed_java_pointed_to_by_ant>/jre而JDK_HOME(来自OS环境)是通常设置为<DOWNLOADED_AND_INSTALLED_JAVA_DEVELOPMENT_KIT>.

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

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

  • 我不会说这是解决方案.它解释了发生了什么,而不是如何解决它.我有同样的问题,它是Ant,而不是我,似乎可以互换地使用java.home和JAVA_HOME.我的JAVA_HOME是正确的,但Ant似乎正在追加/ jre然后抱怨它! (3认同)
  • 我没有使用java.home Ant是.它告诉我我的JAVA_HOME是不正确的,并给我java.home作为它的值.这看起来很糟糕 (2认同)

dtr*_*nas 5

我知道这个问题很旧,但是已被接受的答案不再起作用,并且由于这是Google搜索的第一手链接,我将告诉我如何解决此问题。

使用ubuntu进行蚀:

转到“窗口”->“首选项”->“蚂蚁”->“运行时”->“选择Ant_Home_Entries”,然后单击“添加外部jar”,然后在文件资源管理器中找到您的jdk(默认位于/ usr / lib / jvm /中)以及您的lib文件夹中在jdk中,您将找到tool.jar。选择此选项,然后单击“应用”。

尝试构建您的项目,一切都会正常!

注意:我很久没有使用过ant了,但是如果有人被困在ycsb benchbase工作负载生成器(http://www.couchbase.com/wiki/display/couchbase/Load+Generator+Setup)上,则需要使用它。这个。