32

我在没有 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

问题是当我通常运行 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
4

14 回答 14

13

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

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

然后运行你的脚本。

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

或您希望运行的任何蚂蚁目标

于 2009-02-21T15:45:16.673 回答
6

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

那么,如果你输入 ls $JAVA_HOME 你会看到什么?如果你执行 ls $JAVA_HOME/bin/ 你会看到 javac 吗?

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

于 2009-02-21T15:43:45.770 回答
6

查看用于调用 ant 的 shell 脚本,在 .bashrc 中为您的 shell 设置的 $JAVA_HOME 的值可能会在文件 /etc/ant.conf、$HOME/.ant/ant.conf 和 $ 中被覆盖主页/.antrc。如果您执行 bash -x <path to ant script>,它将发出调试信息,帮助您追踪 $JAVA_HOME 被覆盖的位置。

于 2009-02-21T21:38:38.007 回答
6

在我的 Windows 7 机器设置上:

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

没用。但是设置:

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

工作。

于 2010-03-14T21:27:15.490 回答
5

有两种方法可以改变编译器:

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

另一种选择是将一个相应tools.jar的添加到类路径中,但如果 Ant 是从其他工具(如 Maven)启动的,通常会使用这种方法。

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

于 2015-01-25T19:33:01.853 回答
3

设置环境变量:JAVACMD - Java 可执行文件的完整路径。使用它来调用与 JAVA_HOME/bin/java(.exe) 不同的 JVM。

参考:http ://ant.apache.org/manual/running.html

于 2012-01-25T12:22:44.567 回答
3

尽管环境变量JAVA_HOME设置正确,但ant可以使用每个build.xml或任何构建文件中配置的 JRE。

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

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

于 2012-04-01T14:39:01.547 回答
1

从 shell 运行 ant 时,您不需要export JAVA_HOME先设置该变量为当前 shell 和所有未来命令,而是使用

user@host:~# JAVA_HOME=/path/to/jdk ant targets
于 2013-03-17T03:47:51.003 回答
1

使用 Bash 时,试试这个:

$ export JAVA_HOME=/usr/tomcat/jre
于 2009-02-22T03:35:03.580 回答
1

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

于 2010-10-06T13:30:19.350 回答
1

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

如果您没有 JDK,则可以通过获取 ECJ(eclipse 编译器)库,将其放入“~/.ant/lib”并将系统属性添加到命令行以使用该编译器来解决它- 查看 Ant 手册了解详情。

http://ant.apache.org/

于 2009-02-22T00:30:02.340 回答
0

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

例如

设置 JAVA_HOME="C:\Program Files\Java\jdk1.6.0_14"

于 2009-06-02T07:25:11.140 回答
0

试试这个:

/usr/sbin/update-alternatives --config java
于 2012-08-24T09:12:43.473 回答
-1

java_home 始终指向 jdk,即为您提供类的编译器,而 jre 是您的浏览器或任何编译类的方式,因此它必须在版本中的 jdk 和 jre 之间匹配。

于 2011-09-20T13:43:41.770 回答