2009-02-21 20 views
27

我在没有root的类服务器上执行java工作。每当我尝试使用ant进行编译时,它都会指向错误的目录(/usr/tomcat而不是/usr/tomcat/jre)。如何更改ant的JAVA_HOME?

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

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

编辑: echo $JAVA_HOME/usr/tomcat/jre echo $JAVA_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 
+0

您是否设置了ANT_HOME? – laz 2009-02-21 19:02:03

+0

echo $ ANT_HOME不会返回任何内容,因此可能不会。我会研究它,但任何信息都会有用。 – 2009-02-21 20:04:22

回答

6

JAVA_HOME应安装在JDK不点不是JRE。

因此,如果您键入ls $ JAVA_HOME,您会看到什么? 如果你做ls $ JAVA_HOME/bin /你看到javac了吗?

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

+0

我想你的意思是$ JAVA_HOME/bin /(正斜杠) – wds 2009-02-21 16:30:23

+0

ack - 我的学生太用窗户了:-)谢谢! – TofuBeer 2009-02-21 16:35:31

+1

你是对的;然而,“ant.java。home“属性将总是指向jre,因为它从java.lang.System(它定义为JDK下的JRE)充实了该属性。为了在ant中明确设置Java环境,使用$ { env.JAVA_HOME}与精确路径 – ingyhere 2013-08-02 14:24:04

9

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

#!/bin/sh 
JAVA_HOME=</path/to/jdk>; export JAVA_HOME 
ant [email protected] 

然后运行您的脚本。

$ chmod 755 ant.sh 
$./ant.sh clean compile 

,或者你希望运行

+1

使用`jre`将不会工作;它不包含蚂蚁所要求的工具 – 2010-03-14 22:10:26

5

望着用于调用Ant的shell脚本任何Ant目标,它有可能是价值$ JAVA_HOME设置为你的.bashrc外壳可以在文件被覆盖/etc/ant.conf,$ HOME/.ant/ant.conf和$ HOME/.antrc。如果执行bash -x <路径到ant脚本>它将发出调试信息,这应该可以帮助您追踪$ JAVA_HOME被覆盖的位置。

1

如果您要编译代码,JAVA_HOME需要指向JDK主目录。检查'/ usr/tomcat/jre/bin/javac'是否存在。我怀疑它的确如此。

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

http://ant.apache.org/

1

当使用bash只是试试这个:

$ export JAVA_HOME=/usr/tomcat/jre 
0

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

例如

设置JAVA_HOME = “C:\ Program Files文件\的Java \ jdk1.6.0_14”

4

在我的Windows 7机器设置:

 
JAVA_HOME="C:\Program Files\Java\jdk1.6.0_18" 

没有工作。但设置:

 
JAVA_HOME=C:\Program Files\Java\jdk1.6.0_18 

工作。

1

在项目中设置JRE(项目属性 - > Java Build Path-> Libraries,通常为最后一项)或首选项中的全局默认值(Java-> Installed JRE)到JDK而不是JRE。

-1

java_home总是指向jdk,给你类的编译器, 和jre就是你的浏览器或其他方式编译的类,所以它必须在版本中的jdk和jre之间进行匹配。

3

虽然环境变量JAVA_HOME正确设置时,可以ant每个的build.xml或任何构建文件内使用配置的JRE。

要检查蚂蚁正在使用的JRE版本,右键单击构建文件 - >选择构建蚂蚁,显示有关任务的详细信息以选择等,选择您要使用的JRE。

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

0

尝试这样的:

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

当从壳体蚂蚁,你不需要export JAVA_HOME第一,这将设置可变当前shell和未来的所有命令,而是使用

[email protected]:~# JAVA_HOME=/path/to/jdk ant targets 
2

有改变编译器的2种方法:您之前

  • export JAVA_HOME=/path/to/jdk启动Ant。
  • <javac exectuable="/path/to/javac">

另一种选择是,以各自的tools.jar添加到类路径,但如果蚂蚁是从类似Maven的另一个工具开始该路径通常取。

有关在Java中更改Java编译器的更多详细信息,请参阅this article

相关问题