我正在尝试用“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/StockWatcher/build.xml:29: java.lang.UnsupportedClassVersionError:com / sun / tools / javac / Main: 不支持的major.minor版本51.0
所以我不知道这最后一个错误是因为符号链接...
哈维
答案 0 :(得分:2)
不创建符号链接不是一个好主意(混合两个JDK)
Ant使用与运行Ant本身相同的Java版本。如果你想使用Java 1.7,你应该指示Ant。来自javac
任务文档:
可以使用不同的编译器。这可以通过指定 设置全局build.compiler属性,这将影响 通过设置编译器,整个构建中的所有任务 属性,特定于当前任务或使用嵌套 实现的任何typedeffed或componentdeffed类型的元素 org.apache.tools.ant.taskdefs.compilers.CompilerAdapter。有效值 对于build.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(Microsoft的SDK中的命令行编译器 for Java / Visual J ++) - 可以将microsoft用作别名。
- kjc( kopi编译器)。
- gcj(来自gcc的gcj编译器)。
- sj(赛门铁克java 编译器) - 赛门铁克可以用作别名。 extJavac(运行 现代或经典的JVM本身)。
如果你想使用与Ant相同的Java版本,请确保你正确安装它(并且你安装了JDK而不仅仅是JRE)
答案 1 :(得分:1)
您对JVM的引用有所不同。创建符号链接形式一个版本到另一个版本它实际上是个坏主意,因为你违反版本兼容性。如果您的蚂蚁使用了一些属性,如您所说/usr/lib/jvm/java-6-openjdk/lib/tools.jar
,最好找到包含该属性的文件并将其更改为您的真实位置。
答案 2 :(得分:0)
JAVA_HOME
环境变量的价值是多少?我相信这就是Ant用来确定JVM所在位置的原因。
因此,如果您将此环境变量设置为/usr/lib/jdk1.7.0_01
,则可能会解决您的问题。