如何将JAVA_主页更改为ant?
我在一个没有根的类服务器上进行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
/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