【问题标题】:ant build : unable to locate tools.jar. Expected find it in C:\Program Files\Java\jre7\lib\tools.jarant build:无法找到 tools.jar。预计在 C:\Program Files\Java\jre7\lib\tools.jar 中找到它
【发布时间】:2014-03-26 06:07:15
【问题描述】:

我知道这个问题很受欢迎,但没有一个解决方案可以帮助我。 我使用了thisthisthisthis 解决方案,但没有人帮助我。

我想实现uiautomator Tests 并且需要用ant 构建我的build.xml,但是得到这个奇怪的错误。

我使用的是 Windows 8.1

我的 JAVA_HOME 系统变量设置为 c:\programs files\java\jdk1.7.0_51 和 c:\programs files(x86)\java\jdk1.7.0_51

我的 PATH 系统变量也设置为 %JAVA_HOME%/bin,我的 %ANT_HOME% 设置为 c:\apache-ant。

但是当我在 android app derictory 中执行 ant build 时,我得到了

unable to locate tools.jar. Expected find it in C:\Program Files\Java\jre7\lib\tools.jar
BUILD FAILED
Perhaps JAVA_HOME does not point to the JDK

但我的 JAVA_HOME 指向正确的 JDK !我对此感到困惑。我也多次重建我的构建,我有同样的。

如果有人帮助我,我会很高兴。

【问题讨论】:

  • 您是否在 PATH 变量以及系统环境变量中设置了这些变量?
  • 还将 %JAVA_HOME%\bin 添加到 PATH 系统变量

标签: android ant ui-automation build.xml android-uiautomator


【解决方案1】:

我也有这个问题,通过设置这样的变量来解决它:

[1] ANT_HOME - C:\apache-ant-1.9.3

[2] JAVA_HOME - C:\Program Files\Java\jdk1.7.0_21

[3] PATH - D:\Android_Development\android_sdk\platform-tools\;%ANT_HOME%\bin;%JAVA_HOME%\bin;D:\Android_Development\android_sdk\tools

注意:将所有这些设置在系统变量中而不是用户变量中。

这解决了我的问题。

希望对你有帮助。

【讨论】:

  • 我在用户变量中设置了 ANT_HOME 和 JAVA_HOME。在您回答后,一切正常。 1 票赞成告诉正确的变量
  • 我在其他问答中定义了 JAVA_HOME , ANT_HOME ,但这个只有效。
  • 太棒了。我的是 JAVA_HOME - C:\Program Files\Java\jdk1.8.0_73\bin 所以我删除了 bin,它现在可以正常工作了。
  • 遇到了同样的问题,但在您的回答的帮助下得到了解决。它确实适用于用户变量虽然
  • 我遇到了确切的问题。我确定我正确设置了 JAVA_HOME,但是它是在用户变量下设置的,当我将相同的属性放在系统变量下时,它工作得很好
【解决方案2】:

要解决此问题,您只需将 tools.jar 从“C:\ProgramFiles\Java\jdk1.7.0\lib”直接复制到“C:\Program Files\Java\jre7\lib\”即可。您将成功恢复问题。

有效!..

【讨论】:

  • 它为我解决了 - 但我使用了“创建快捷方式”选项。我来自 Linux 世界,所以我喜欢链接文件 :)
【解决方案3】:

我解决了将 %JAVA_HOME% 设置为 PATH 开头的问题。当我将它完全设置为开始时,它对我有用。

【讨论】:

    【解决方案4】:

    关于tools.jar,我遇到了以下情况:下载ant时,自带open java 7,而我下载的系统,使用的是Java 8 u 40(Oracle 版本)。因此,当我通过 linux 中的软链接将 lib/jre 指向 tools.jar 的位置时,我得到了错误,现在版本/subversion 不匹配。这是因为 ant 使用的是版本 7,而 Oracle 的 tools.jar 现在是版本 8。

    解决方案是,使用上述帮助(将 JAVA_PATH 设置为我的 Oracle 版本 8u40 Java),这样编译器和 tools.jar 文件版本相同。

    我所处的场景,因此在我的 /home/david/Desktop/Android5.0/jdk1.8.0u40 目录中从 Oracle 下载了 jdk - 来自 /home/david/ 的 Android 包Desktop/Android5.0目录,我的Eclipse工作空间在/home/david/workspace——现在我希望能更好的去。

    ant 文件 build.xml 放在我的 /home/david/workspace 目录中 - 它看起来像这样:

    <project>
        <target name="clean">
            <delete dir="build"/>
        </target>
    
        <target name="compile">
            <mkdir dir="build/classes"/>
            <javac srcdir="src" destdir="build/classes"/>
        </target>
    
        <target name="jar" depends="compile">
            <mkdir dir="build/jar"/>
            <jar destfile="build/jar/HelloWorld.jar" basedir="build/classes">
                <manifest>
                    <attribute name="Main-Class" value="oata.HelloWorld"/>
                </manifest>
            </jar>
        </target>
    
        <target name="run" depends="jar">
            <java jar="build/jar/HelloWorld.jar" fork="true"/>
        </target>
    
    </project>
    

    这个问题中的 java 文件 - HelloWorld.java,被放入目录 /home/david/workspace/build/src/oata - 现在它编译到您可以在上面看到的目标,然后从那里编译 jar文件也在构建中。

    是的 - 有一些方法可以让一个版本的 Java 伪装成另一个版本 - 但我不想去那里,因为我正在设置一个构建环境,我可以从存储库中提取,构建,并将构建的代码存储到下载站点中。

    上面的 build.xml 示例是根据以下 Ant 构建教程稍微修改的:https://ant.apache.org/manual/tutorial-HelloWorldWithAnt.html

    伙计们——希望它也对你有用,因为 ant 确实是最好的构建方式之一,因为你可以从命令行调用它,你可以让它先从存储库(GitHub 或 BitBucket 等)中选择文件。 ),然后您可以将编译结果 FTP 到您首选的开发人员下载站点,您可以将代码压缩在一起,这样您就可以准备好版本并在最坏的情况下压缩...

    【讨论】:

      【解决方案5】:

      将 tools.jar 从 C:\Program Files\Java\jdk1.8.0_91\lib 复制到 C:\Program Files\Java\jdk1.8.0_91\bin。就我而言,它对我来说效果很好

      【讨论】:

        【解决方案6】:
        1. 系统-变量中设置:

          • JAVA_HOME:C:\Program Files\Java\jdkVERSION
          • ANT_HOME:C:\Program Files\apache-ant-VERSION
          • PATH: %JAVA_HOME%\bin;%ANT_HOME%\bin;...(在 PATH 变量的开头)
        2. 用户-变量中删除所有与 Java/Ant 相关的内容

        3. 重新启动命令行 (!) 以在运行实例的上下文中接收新变量。

        【讨论】:

          【解决方案7】:

          检查JAVA_HOMEPATH 变量的值,有时你可能会放

          JAVA_HOME="C:\Program Files\Java\jdk1.8.0\bin" .
          

          而不是

          JAVA_HOME="C:\Program Files\Java\jdk1.8.0" .
          

          PATH=%JAVA_HOME%\bin;%PATH% .

          只需在 CLI 中回显 PATH 变量即可。

          echo %PATH%.
          

          【讨论】:

            【解决方案8】:

            请为 JDK 而不是 JRE 设置系统变量。这将解决问题

            【讨论】:

              【解决方案9】:

              按照以下步骤解决问题:

              转到控制面板 -> 设置以下环境变量:

              1. ANT_HOME - C:\apache-ant-1.9.14

              2. JAVA_HOME - C:\Program Files\Java\jdk1.8.0_181

              3. 路径 - %ANT_HOME%\bin;%JAVA_HOME%\bin;

              【讨论】:

                【解决方案10】:

                这是因为编辑环境变量而不是创建新变量。尽管设置了 java home 和 path 变量,但它没有正确指向。 只需删除 java home 和 path 变量并再次添加即可。 这个解决了我的问题。

                【讨论】:

                • 亲爱的 Sudha 非常感谢您的贡献。如您所见,这个问题很老了!您的回答很好,并且再次设置路径足以解决它。请尝试使用更新的解决方案为新问题做出更多贡献,这样您将对社区提供更多帮助。
                猜你喜欢
                • 1970-01-01
                • 2012-05-09
                • 2012-02-09
                • 1970-01-01
                • 1970-01-01
                • 2020-09-13
                • 1970-01-01
                • 2011-08-09
                相关资源
                最近更新 更多