ant build:无法找到tools.jar。预计在C:\ Program Files \ Java \ jre7 \ lib \ tools.jar中找到它

时间:2014-02-24 14:07:59

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

我知道这个问题很受欢迎,但没有一个解决方案可以帮助我。 我使用了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中执行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!我对此感到困惑。我也多次重建我的版本,我也一样。

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

10 个答案:

答案 0 :(得分:33)

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

[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

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

这解决了我的问题。

希望它有所帮助。

答案 1 :(得分:16)

要恢复这些问题,您只需从" C:\ ProgramFiles \ Java \ jdk1.7.0 \ lib"中复制tools.jar即可。直接进入" C:\ Program Files \ Java \ jre7 \ lib \"。您将成功恢复问题。

它有效!..

答案 2 :(得分:10)

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

答案 3 :(得分:2)

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

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

我所处的场景,因为它来自我的/home/david/Desktop/Android5.0/jdk1.8.0u40目录中的Oracle下载的jdk - 来自/ home / david /的Android软件包Desktop / Android5.0目录,我的Eclipse工作区在/ home / david / workspace中 - 现在我希望能够更好地去。

ant-file 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到开发人员首选的下载站点,您可以将代码压缩在一起,以便在最坏的情况下准备好版本并压缩...

答案 4 :(得分:2)

将tools.jar从C:\ Program Files \ Java \ jdk1.8.0_91 \ lib复制到C:\ Program Files \ Java \ jdk1.8.0_91 \ bin。在我的情况下它对我来说很好用

答案 5 :(得分:2)

  1. 系统 - 变量:

    中设置
    • JAVA_HOME:C:\ Program Files \ Java \ jdkVERSION
    • ANT_HOME:C:\ Program Files \ apache-ant-VERSION
    • 路径:%JAVA_HOME%\ bin;%ANT_HOME%\ bin; ...(在PATH变量的开头)
  2. 用户 -variables

  3. 中删除与Java / Ant相关的所有内容
  4. 重新启动命令行(!)以在正在运行的实例的上下文中接收新的变量。

答案 6 :(得分:0)

检查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%.

答案 7 :(得分:0)

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

答案 8 :(得分:0)

请按照以下步骤解决此问题:

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

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

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

  3. PATH-%ANT_HOME%\ bin;%JAVA_HOME%\ bin;

答案 9 :(得分:0)

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