Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将JAVA_主页更改为ant?_Ant_Java Home - Fatal编程技术网

如何将JAVA_主页更改为ant?

如何将JAVA_主页更改为ant?,ant,java-home,Ant,Java Home,我在一个没有根的类服务器上进行java工作。每当我尝试使用ant编译时,它都指向错误的目录(/usr/tomcat,而不是/usr/tomcat/jre) 设置用户帐户时,我们被告知要做的一件事是将export JAVA_HOME=/usr/tomcat/jre添加到.bashrc文件中。我不知道这是否应该解决这个问题,但似乎没有 那么,如何更改ant的JAVA_HOME属性,但仅限于运行ant时 编辑: echo$JAVA_HOME指向/usr/tomcat/jre echo$JAVA\u H

我在一个没有根的类服务器上进行java工作。每当我尝试使用ant编译时,它都指向错误的目录(
/usr/tomcat
,而不是
/usr/tomcat/jre

设置用户帐户时,我们被告知要做的一件事是将
export JAVA_HOME=/usr/tomcat/jre
添加到.bashrc文件中。我不知道这是否应该解决这个问题,但似乎没有

那么,如何更改ant的JAVA_HOME属性,但仅限于运行ant时

编辑:
echo$JAVA_HOME
指向
/usr/tomcat/jre
echo$JAVA\u HOME\bin
指向
/usr/tomcat/jrebin

问题是,当我正常运行ant时,会出现以下错误:

Unable to locate tools.jar. Expected to find it in /usr/tomcat/lib/tools.jar
Buildfile: build.xml

compile:
    [javac] Compiling 1 source file to /home/ejm244/build/classes

BUILD FAILED
/home/ejm244/build.xml:9: Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.

Perhaps JAVA_HOME does not point to the JDK

Total time: 0 seconds

JAVA_HOME应该指向JDK的安装位置,而不是JRE

那么,如果您键入ls$JAVA_HOME,您会看到什么? 如果你使用ls$JAVA_HOME/bin/你看到javac了吗

如果第一个不起作用,那么就没有指向正确目录的JAVA_HOME。
如果第二个不起作用,那么您需要将JAVA_HOME指向JDK而不是JRE。

您可以创建自己的脚本来运行ant,例如命名为ant.sh的脚本,如:

#!/bin/sh
JAVA_HOME=</path/to/jdk>; export JAVA_HOME
ant $@

或者,无论您希望运行什么ant目标,查看用于调用ant的shell脚本,都有可能在/etc/ant.conf、.HOME/.ant/ant.conf和$HOME/.antc文件中覆盖.bashrc中shell的$JAVA_HOME set值。如果执行bash-x,它将发出调试信息,这将帮助您跟踪$JAVA\u HOME被覆盖的位置。

如果您试图编译代码,JAVA\u HOME需要指向JDK HOME。检查“/usr/tomcat/jre/bin/javac”是否存在。我怀疑这是真的

如果您没有JDK,那么您可以通过获取ECJ(eclipse编译器)库,将其放到“~/.ant/lib”中,并向命令行添加一个系统属性来使用该编译器来解决这个问题—有关详细信息,请查看ant手册


使用Bash时,请尝试以下方法:

$ export JAVA_HOME=/usr/tomcat/jre

您需要将JAVA_主路径更改为JAVA SDK目录,而不是JAVA RE目录。在Windows中,可以在命令提示符下使用set命令执行此操作

e、 g


在我的Windows 7机器上设置JAVA\u HOME=“C:\Program Files\JAVA\jdk1.6.0\u 14”

JAVA_HOME="C:\Program Files\Java\jdk1.6.0_18" JAVA\u HOME=“C:\Program Files\JAVA\jdk1.6.0\u 18” 没用。但背景:

JAVA_HOME=C:\Program Files\Java\jdk1.6.0_18 JAVA\u HOME=C:\Program Files\JAVA\jdk1.6.0\u 18
工作。

将项目中的JRE(项目属性->Java构建路径->库,通常是最后一个条目)或首选项中的全局默认值(Java->Installed JRE)设置为JDK,而不是JRE。

Java\u home始终指向JDK,即提供类的编译器, jre是您的浏览器或任何东西将编译类的一种方式,因此在版本中必须在jdk和jre之间进行匹配。

设置环境变量: JAVACMD—Java可执行文件的完整路径。使用此命令可以调用不同于JAVA_HOME/bin/JAVA(.exe)的JVM


参考:

尽管环境变量
JAVA\u HOME
设置正确,但是
ant
可以在each build.xml或任何构建文件中使用配置的JRE

要检查ant使用的JRE版本,请右键单击构建文件->选择build ant,该文件显示要选择的任务的详细信息,等等,选择要使用的JRE

建议使用项目级设置或仅在工作区级设置。

尝试以下操作:

/usr/sbin/update-alternatives --config java

当从shell运行ant时,您不需要首先导出JAVA_HOME,这将为您当前的shell和所有将来的命令设置该变量,而是使用

user@host:~# JAVA_HOME=/path/to/jdk ant targets

有两种更改编译器的方法:

  • 启动Ant之前,将JAVA_HOME=/path/to/jdk导出
  • 设置
另一种选择是向类路径添加相应的
tools.jar
,但如果Ant是从其他工具(如Maven)启动的,则通常使用这种方法


有关在Ant中更改Java编译器的这些(或其他)选项的更多详细信息,请参阅示例。

我想你指的是$Java_HOME/bin/(正向斜杠)ack-我的学生使用windows太多:-)谢谢!你是对的;但是,“ant.java.home”属性将始终指向jre,因为它从java.lang.System(根据定义是JDK下的jre)中充实了该属性。要在ant中最终设置Java环境,请使用${env.Java_HOME}和精确路径指定Java位置。echo$ant_HOME可能不会返回任何结果。我会研究一下,但任何信息都会有用。请仔细阅读错误消息:找不到tools.jar。预计会在/usr/tomcat/lib/tools.jar中找到它,这表明JAVA_HOME实际上是/usr/tomcat,而不是/usr/tomcat/jre。出于某种原因,JAVA_HOME的一个不正确的值覆盖了shell值。@laz这并不重要-根本原因是OP试图使用JRE来运行Ant,而他应该使用JDK,正如Nbeyer指出的那样,使用
JRE
是行不通的;它不包含ant为此要求的工具,不影响ant的JAVA_Home我在meta上编辑了每个问题的电子邮件:一般来说,这也适用于答案。
user@host:~# JAVA_HOME=/path/to/jdk ant targets