试着用ant编译

时间:2011-11-23 16:58:11

标签: java ant jvm

我正在尝试用“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

所以我不知道这最后一个错误是因为符号链接...

哈维

3 个答案:

答案 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,则可能会解决您的问题。