我正在没有root的类服务器上执行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_HOME\bin
指向/usr/tomcat/jrebin
问题是当我正常运行蚂蚁时出现此错误:
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
您可以创建自己的脚本来运行ant,例如命名为ant.sh,例如:
#!/bin/sh
JAVA_HOME=</path/to/jdk>; export JAVA_HOME
ant $@
然后运行您的脚本。
$ chmod 755 ant.sh
$./ant.sh clean compile
或您希望运行的任何蚂蚁目标
JAVA_HOME应该指向JDK的安装位置,而不是JRE。
因此,如果键入ls $ JAVA_HOME,您会看到什么?如果执行ls $ JAVA_HOME / bin /,是否看到javac?
如果第一个不起作用,则您没有JAVA_HOME指向正确的目录。如果第二个命令不起作用,则需要将JAVA_HOME指向JDK而不是JRE。
查看shell脚本以调用ant,可能会在文件/etc/ant.conf、$HOME/.ant/ant.conf,和$ HOME / .antrc。如果执行bash -x
在我的Windows 7计算机上设置:
JAVA_HOME =“ C:\ Program Files \ Java \ jdk1.6.0_18”
没有工作。但是设置:
JAVA_HOME = C:\ Program Files \ Java \ jdk1.6.0_18
工作。
有两种更改编译器的方法:
export JAVA_HOME=/path/to/jdk
。<javac exectuable="/path/to/javac">
另一种选择是将一个相应的tools.jar
添加到类路径,但这通常是在从诸如Maven之类的其他工具启动Ant的情况下使用的。
有关在Ant中更改Java编译器的这些(或其他)选项的更多详细信息,请参见this article。
设置环境变量:JAVACMD-Java可执行文件的完整路径。用它来调用不同于JAVA_HOME / bin / java(.exe)的JVM。
尽管环境变量JAVA_HOME
设置正确,但是ant
可以在每个build.xml或任何构建文件中使用已配置的JRE。
要检查该蚂蚁正在使用的JRE版本,请右键单击构建文件->选择显示有关要选择的任务的详细信息的构建蚂蚁,等等,选择要使用的JRE。
建议使用项目级别的设置或仅在工作空间级别使用。
JAVA_HOME如果您要编译代码,则需要指向JDK主页。检查是否存在“ / usr / tomcat / jre / bin / javac”。我对此表示怀疑。
如果没有JDK,则可以通过获取ECJ(eclipse编译器)库,将其放入'〜/ .ant / lib',然后在命令行中添加系统属性来使用,来解决该问题。该编译器-有关详细信息,请参阅Ant手册。
[在项目中设置JRE(项目属性-> Java Build Path->库,通常是最后一个条目),或在JDK(而非JRE)中将全局默认设置(Java->已安装的JRE)设置为JDK。
使用Bash时,请尝试以下操作:
$ export JAVA_HOME=/usr/tomcat/jre
您需要将JAVA_HOME路径更改为Java SDK目录而不是Java RE目录。在Windows中,您可以在命令提示符下使用set命令来执行此操作。
例如
set JAVA_HOME =“ C:\ Program Files \ Java \ jdk1.6.0_14”
尝试一下:
/usr/sbin/update-alternatives --config java
从shell运行ant时,您不需要先export JAVA_HOME
,它将为您当前的shell和所有将来的命令设置该变量,而是使用
user@host:~# JAVA_HOME=/path/to/jdk ant targets
java_home始终指向jdk,即为您提供类的编译器,jre是您的浏览器或任何已编译类的方式,因此它必须在版本中的jdk和jre之间具有匹配项。