IllegalAccessError:使用ANT构建Android时尝试访问类 [英] IllegalAccessError: tried to access class while building Android with ANT
问题描述
我们正在使用 ANT 构建我们的android应用程序.升级到最新的 SDK工具(Rev 21)和平台工具(Rev 16)之后,并设置 android:targetSdkVersion ="17" 在manifest.xml中,我们的蚂蚁构建失败,并出现 IllegalAccessError .
We are building our android application with ANT. After upgrading to the latest SDK tools (Rev 21) and platform tools (Rev 16) along with setting the android:targetSdkVersion="17" in manifest.xml, our ant build fails with IllegalAccessError.
奇怪的是,双重 ant版本成功:
- 清洁蚂蚁->成功构建
- 蚂蚁发布->建立失败
- ant版本-> 已成功构建
- ant clean -> BUILD SUCCESSFUL
- ant release - > BUILD FAILED
- ant release - > BUILD SUCCESSFUL
虽然显然我们实际上想要做的不是:
While obviously what we actually want to do does not:
- 蚂蚁清洁释放->建立失败
- ant clean release - > BUILD FAILED
我已经用 android更新项目-p重建了build.xml.导致了相同的行为.
I already regenerated the build.xml with android update project -p . resulting in the same beaviour.
请参阅下面的ANT输出:
See ANT Output below:
release:
-pre-build:
-code-gen:
[mergemanifest] Merging AndroidManifest files into one.
[mergemanifest] Manifest merger disabled. Using project manifest only.
[echo] Handling aidl files...
[aidl] No AIDL files to compile.
[echo] ----------
[echo] Handling RenderScript files...
[renderscript] No RenderScript files to compile.
[echo] ----------
[echo] Handling Resources...
[aapt] Generating resource IDs...
BUILD FAILED
/home/me/android-sdks/tools/ant/build.xml:645: The following error occurred while executing this line:
/home/me/android-sdks/tools/ant/build.xml:683: java.lang.IllegalAccessError: tried to access class com.google.common.base.Platform from class com.google.common.base.CharMatcher
at com.google.common.base.CharMatcher.precomputed(CharMatcher.java:684)
at com.google.common.base.CharMatcher.<clinit>(CharMatcher.java:63)
at com.google.common.base.Splitter.on(Splitter.java:129)
at com.android.sdklib.internal.build.SymbolWriter.write(SymbolWriter.java:51)
at com.android.ant.AaptExecTask.execute(AaptExecTask.java:711)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
at com.android.ant.IfElseTask.execute(IfElseTask.java:120)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:398)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:390)
at org.apache.tools.ant.Target.performTasks(Target.java:411)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
at org.apache.tools.ant.Main.runBuild(Main.java:809)
at org.apache.tools.ant.Main.startAnt(Main.java:217)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
Total time: 2 seconds
白雪皑皑的中欧地区,非常感谢!
Many Thanks and kind regards from snowy Central Europe
推荐答案
在绊倒此错误时,这可能会对某人有所帮助:
Maybe this will help someone when stumbling over this error:
我遇到了同样的问题,原因是在Ant的类路径中重复了JAR.以我为例,将checkstyle-5.6-all.jar添加到包含上述类的ANT_HOME \ lib文件夹中,由于类的重复以及它们之间的访问而导致了一些错误.
I had the same issue, the reason were duplicated JARs in Ant's classpath. In my case, checkstyle-5.6-all.jar was added to the ANT_HOME\lib folder which contained the above mentioned classes, that caused some errors due to duplicate classes and access between them.
在这种情况下,我建议为使用此库的Ant目标添加一个本地类路径变量,并保持ANT_HOME \ lib尽可能干净.
In this case, I suggest adding a local classpath variable for the Ant target which uses this library and keep the ANT_HOME\lib as clean as possible.
这篇关于IllegalAccessError:使用ANT构建Android时尝试访问类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!