我在没有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
答案 0 :(得分:12)
您可以创建自己的脚本来运行ant,例如命名为ant.sh,如:
#!/bin/sh
JAVA_HOME=</path/to/jdk>; export JAVA_HOME
ant $@
然后运行你的脚本。
$ chmod 755 ant.sh
$./ant.sh clean compile
或您希望运行的任何蚂蚁目标
答案 1 :(得分:6)
JAVA_HOME应该指向JDK的安装位置,而不是JRE。
那么,如果你输入ls $ JAVA_HOME,你看到了什么? 如果你做了$ JAVA_HOME / bin /你看到javac吗?
如果第一个不起作用,那么你没有JAVA_HOME指向正确的目录。 如果第二个不起作用,那么你需要将JAVA_HOME指向JDK而不是JRE。
答案 2 :(得分:5)
查看用于调用ant的shell脚本,可以在文件/etc/ant.conf, $ HOME / .ant / ant.conf中覆盖为.bashrc中的shell设置的$ JAVA_HOME的值。 ,和$ HOME / .antrc。如果执行bash -x&lt;路径到ant脚本&gt;它将发出调试信息,这些信息可以帮助您追踪$ JAVA_HOME被覆盖的位置。
答案 3 :(得分:5)
在我的Windows 7设备上:
JAVA_HOME="C:\Program Files\Java\jdk1.6.0_18"
没用。但是设置:
JAVA_HOME=C:\Program Files\Java\jdk1.6.0_18
的工作。
答案 4 :(得分:3)
设置env var: JAVACMD - Java可执行文件的完整路径。使用它来调用与JAVA_HOME / bin / java(.exe)不同的JVM。
答案 5 :(得分:3)
虽然环境变量JAVA_HOME
设置正确,但ant
可能会在每个 build.xml 或任何构建文件中使用已配置的JRE。
要查看ant正在使用的JRE版本,请右键单击构建文件 - &gt;选择build ant,显示有关要选择的任务的详细信息等,选择要使用的JRE。
建议使用项目级别设置或仅在工作区级别。
答案 6 :(得分:3)
有两种更改编译器的方法:
export JAVA_HOME=/path/to/jdk
。<javac exectuable="/path/to/javac">
另一种选择是在类路径中添加相应的tools.jar
,但是如果从Maven等其他工具启动Ant,通常会采用该路径。
有关在Ant中更改Java编译器的这些(或其他)选项的更多详细信息,请参阅this article。
答案 7 :(得分:1)
如果您正在尝试编译代码,JAVA_HOME需要指向JDK主目录。检查'/ usr / tomcat / jre / bin / javac'是否存在。我对此表示怀疑。
如果您没有JDK,那么您可以通过获取ECJ(eclipse编译器)库,将其放入'〜/ .ant / lib'并将系统属性添加到命令行来解决此问题。使用该编译器 - 查看Ant手册了解详细信息。
答案 8 :(得分:1)
使用Bash时,试试这个:
$ export JAVA_HOME=/usr/tomcat/jre
答案 9 :(得分:1)
在项目中设置JRE(项目属性 - &gt; Java Build Path-&gt; Libraries,通常是最后一个条目),或者将首选项(Java-&gt; Installed JREs)中的全局默认值设置为JDK,而不是JRE。 / p>
答案 10 :(得分:0)
您需要将JAVA_HOME路径更改为Java SDK目录而不是Java RE目录。在Windows中,您可以在命令提示符中使用set命令执行此操作。
e.g。
设置JAVA_HOME =“C:\ Program Files \ Java \ jdk1.6.0_14”
答案 11 :(得分:0)
试试这个:
/usr/sbin/update-alternatives --config java
答案 12 :(得分:0)
从shell运行ant时,首先不需要export JAVA_HOME
,这将为当前shell和所有将来的命令设置该变量,而是使用
user@host:~# JAVA_HOME=/path/to/jdk ant targets
答案 13 :(得分:-1)
java_home总是指向jdk,这是给你类的编译器, 并且jre是你的浏览器或编译类的任何东西,所以它必须在版本中的jdk和jre之间匹配。