首页 文章

试着用ant编译

提问于
浏览
4

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

  • 2

    不创建符号链接不是一个好主意(混合两个JDK)

    Ant使用与运行Ant本身相同的Java版本 . 如果你想使用Java 1.7,你应该指示Ant . 来自 javac 任务文档:

    可以使用不同的编译器 . 这可以通过设置全局build.compiler属性来指定,该属性将影响整个构建中的所有任务,方法是设置特定于当前任务的编译器属性,或者使用实现org的任何typedeffed或componentdeffed类型的嵌套元素 . 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(Symantec java编译器) - 赛门铁克可以用作别名 . extJavac(在自己的JVM中运行现代或经典) .

    如果你想使用与Ant相同的Java版本,请确保你正确安装它(并且你安装了JDK而不仅仅是JRE)

  • 0

    您对JVM的引用有所不同 . 创建符号链接形式一个版本到另一个版本它实际上是个坏主意,因为你违反版本兼容性 . 如果您的 Ant 使用了一些属性,就像您说的那样 /usr/lib/jvm/java-6-openjdk/lib/tools.jar 最好找到具有该属性的文件并将其更改为您的真实位置 .

  • 1

    您的 JAVA_HOME 环境变量的 Value 是多少?我相信这是Ant在确定JVM所在位置时所关注的内容 .

    因此,如果将此环境变量设置为 /usr/lib/jdk1.7.0_01 ,则可能会解决您的问题 .

相关问题