我正试图用"ant build"编译我的项目,但我得到这个错误:
无法找到tools.jar。希望能找到它/usr/lib/jvm/java-6-openjdk/lib/tools.jar
我搜索了tools.jar
,它正好在/usr/lib/jdk1.7.0_01/lib/tools.jar
中。
创建一个像下面这样的符号链接是个好主意吗?
ln -s/usr/lib/jdk1.7.0_01/lib/tools.jar/usr/lib/jdk1.7.0_01/lib/tools.jar
好. .实际上我试着创建这个符号链接,但然后我得到这个错误:
BUILD FAILED/home/me/code/stockwatch/BUILD .xml:29java.lang.UnsupportedClassVersionError: com/sun/tools/javac/Main:不支持的专业。次要版本51.0
所以我不知道最后这个错误是不是因为符号链接…
杰维
不创建符号链接不是一个好主意(混合两个jdk)
Ant使用与运行Ant本身相同的Java版本。如果您想使用Java 1.7,您应该指导Ant。javac
任务文档:
可以使用不同的编译器。这可以通过要么设置全局build.compiler属性,这将影响通过设置编译器,在整个构建过程中执行所有任务属性,特定于当前任务或通过使用嵌套的的任何类型定义或组件定义类型的元素org.apache.tools.ant.taskdefs.compilers.CompilerAdapter。有效值对于build.compiler属性或compiler属性都是:
- classic (JDK 1.1/1.2的标准编译器)- javac1.1和javac1.2可以用作别名。
- modern (JDK 1.3/1.4/1.5/1.6/1.7的标准编译器)- javac1.3和javac1.4和javac1.5和javac1.6和javac1.7 (Ant 1.8.2起)可以用作别名。jikes (
- Jikes编译器)。
- jvc(来自微软SDK的命令行编译器
- kjc (产自编译器)。
- gcj (gcc的gcj编译器).
- sj(赛门铁克java编译器)-赛门铁克可以用作别名。extJavac(任意运行)
如果您想使用与Ant相同的Java版本,请确保正确安装了它(并且安装了JDK而不仅仅是JRE)
您对JVM的引用不同。创建从一个版本到另一个版本的符号链接实际上是一个坏主意,因为你违反了版本兼容性。如果您的蚂蚁使用一些属性,如您所说的/usr/lib/jvm/java-6-openjdk/lib/tools.jar
,最好找到具有该属性的文件并将其更改为您的实际位置。
您的JAVA_HOME
环境变量的值是多少?我相信这就是Ant确定JVM所在位置的依据。
因此,如果您将此环境变量设置为/usr/lib/jdk1.7.0_01
,则可能解决您的问题。