使用外部库运行UIAutomator测试给出uiautomator java.lang.IllegalAccessError:预验证类中的类ref

时间:2015-06-17 16:15:48

标签: android ant dex uiautomator android-uiautomator

我正面临" java.lang.IllegalAccessError:预验证类中的类参考..."通过命令提示符运行UIAutomator测试时。

我创建了一个uiautomator 测试项目,并将外部apache-commons-lang.jar添加到测试项目/ libs 文件夹中。

我在编译 dex 目标下覆盖了该位置

  

%ANDROID_HOME%\工具\蚂蚁\ uibuild.xml

使用外部库编译源测试代码,并且它成功地能够创建.dex文件和.jar文件。

<property name="jar.libs.dir" value="libs />
<property name="jar.libs.absolute.dir" location="${jar.libs.dir}" />
<path id="classpath">
    <fileset dir="${jar.libs.absolute.dir}">
        <include name="uiautomator.jar" />
        <include name="commons-lang-2.0.jar" />
    </fileset>
</path>


<target name="compile" depends="-build-setup, -pre-compile">
    <echo message="In the compilation****"/>
    <javac encoding="${java.encoding}" source="${java.source}"
        target="${java.target}" debug="true" extdirs="" includeantruntime="false"
        destdir="${out.classes.absolute.dir}" bootclasspathref="project.target.class.path"
        verbose="${verbose}" fork="${need.javac.fork}">
        <src path="${source.absolute.dir}" />
        <classpath refid="classpath" />
        <compilerarg line="${java.compilerargs}" />
    </javac>
</target>

<target name="-dex" depends="compile, -post-compile">
    <dex executable="${dx}" output="${intermediate.dex.file}"
        nolocals="@{nolocals}" verbose="${verbose}">
        <fileset dir="${jar.libs.absolute.dir}">
            <include name="*.jar" />
        </fileset>
        <path path="${out.classes.absolute.dir}" />
    </dex>
</target>

但是在使用命令

通过 adb 推送jar文件之后
  

adb push test-project.jar / data / local / tmp /

并运行命令

  

adb shell uiautomator runtest /data/local/tmp/test-project.jar -c   包name.TestClass

结果低于错误。

  

INSTRUMENTATION_RESULT:shortMsg = java.lang.IllegalAccessError   INSTRUMENTATION_RESULT:longMsg =预验证类中的类ref   解决了意外的实现INSTRUMENTATION_CODE:0

高级感谢您解决此问题的任何帮助。

0 个答案:

没有答案