【问题标题】:Trying to compile with ant尝试用 ant 编译
【发布时间】:2012-01-04 23:24:01
【问题描述】:

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

嗯.. 实际上我尝试创建该符号链接,但随后出现此错误:

构建失败/home/me/code/StockWatcher/build.xml:29: java.lang.UnsupportedClassVersionError: com/sun/tools/javac/Main : 不支持的major.minor 51.0版

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

贾维

【问题讨论】:

标签: java ant jvm


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    JAVA_HOME 环境变量的值是多少?我相信这就是 Ant 用来确定 JVM 所在位置的方法。

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

    【讨论】:

      【解决方案3】:

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

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

      可以使用不同的编译器。这可以指定为 要么设置全局 build.compiler 属性,这将影响 整个构建过程中的所有任务,通过设置编译器 属性,特定于当前任务或使用嵌套 实现的任何类型定义或组件定义类型的元素 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 编译器)。
      • jvc(来自微软 SDK 的命令行编译器 用于 Java / Visual J++) – microsoft 可以用作别名。
      • kjc( kopi 编译器)。
      • gcj(来自 gcc 的 gcj 编译器)。
      • sj(赛门铁克 java 编译器)——赛门铁克可用作别名。 extJavac(运行 JVM 中的现代或经典)。

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

      【讨论】:

        猜你喜欢
        • 2015-07-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-05
        • 2017-05-25
        • 1970-01-01
        • 1970-01-01
        • 2010-11-11
        相关资源
        最近更新 更多