我知道这个问题很受欢迎,但没有一个解决方案可以帮助我。 我使用了this,this,this和this解决方案,但没有人帮助我。
我想实现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!我对此感到困惑。我也多次重建我的版本,我也一样。
如果有人帮助我会很高兴。
答案 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)
在系统 - 变量:
中设置从用户 -variables
重新启动命令行(!)以在正在运行的实例的上下文中接收新的变量。
答案 6 :(得分:0)
检查JAVA_HOME
和PATH
变量的值,有时可能会放
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)
请按照以下步骤解决此问题:
转到控制面板->设置以下环境变量:
ANT_HOME-C:\ apache-ant-1.9.14
JAVA_HOME-C:\ Program Files \ Java \ jdk1.8.0_181
PATH-%ANT_HOME%\ bin;%JAVA_HOME%\ bin;
答案 9 :(得分:0)
这是因为编辑环境变量而不是创建新变量。尽管设置了java home和path变量,但指向不正确。 只需删除java home和path变量,然后再次添加即可。 这个解决了我的问题。