Java Illegalacesserror:在使用ANT构建Android时尝试访问类
我们正在用ANT构建android应用程序。升级到最新的SDK工具(第21版)和平台工具(第16版)以及在manifest.xml中设置android:targetSdkVersion=“17”后,我们的ant构建失败,出现IllegaAccessError 奇怪的是,一个双重蚂蚁释放成功了:Java Illegalacesserror:在使用ANT构建Android时尝试访问类,java,android,ant,Java,Android,Ant,我们正在用ANT构建android应用程序。升级到最新的SDK工具(第21版)和平台工具(第16版)以及在manifest.xml中设置android:targetSdkVersion=“17”后,我们的ant构建失败,出现IllegaAccessError 奇怪的是,一个双重蚂蚁释放成功了: 蚂蚁清理->构建成功 ant发布->构建失败 ant发布->构建成功 显然,我们真正想要做的不是: ant clean发布->构建失败 我已经用android更新项目-p重新生成了build.xm
- 蚂蚁清理->构建成功
- ant发布->构建失败
- ant发布->构建成功
- ant clean发布->构建失败
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
发布:
-预构建:
-代码生成:
[mergemanifest]将AndroidManifest文件合并为一个文件。
[mergemanifest]已禁用清单合并。仅使用项目清单。
[echo]正在处理aidl文件。。。
[aidl]没有要编译的aidl文件。
[回声]----------
[echo]正在处理RenderScript文件。。。
[renderscript]没有要编译的renderscript文件。
[回声]----------
[echo]正在处理资源。。。
[aapt]正在生成资源ID。。。
构建失败
/home/me/android sdks/tools/ant/build.xml:645:执行此行时发生以下错误:
/home/me/android-sdks/tools/ant/build.xml:683:java.lang.IllegalAccessError:试图从class com.google.common.base.Platform访问class com.google.common.base.CharMatcher
位于com.google.common.base.CharMatcher.precomputed(CharMatcher.java:684)
位于com.google.common.base.CharMatcher(CharMatcher.java:63)
位于com.google.common.base.Splitter.on(Splitter.java:129)
位于com.android.sdklib.internal.build.SymbolWriter.write(SymbolWriter.java:51)
位于com.android.ant.AaptExecTask.execute(AaptExecTask.java:711)
位于org.apache.tools.ant.UnknowneElement.execute(unknowneElement.java:291)
位于sun.reflect.GeneratedMethodAccessor4.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:616)
位于org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
位于org.apache.tools.ant.Task.perform(Task.java:348)
位于org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
位于com.android.ant.IfElseTask.execute(IfElseTask.java:120)
位于org.apache.tools.ant.UnknowneElement.execute(unknowneElement.java:291)
位于sun.reflect.GeneratedMethodAccessor4.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:616)
位于org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
位于org.apache.tools.ant.Task.perform(Task.java:348)
位于org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
位于org.apache.tools.ant.UnknowneElement.execute(unknowneElement.java:291)
位于sun.reflect.GeneratedMethodAccessor4.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:616)
位于org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
位于org.apache.tools.ant.Task.perform(Task.java:348)
位于org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:398)
位于org.apache.tools.ant.UnknowneElement.execute(unknowneElement.java:291)
位于sun.reflect.GeneratedMethodAccessor4.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:616)
位于org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
位于org.apache.tools.ant.Task.perform(Task.java:348)
位于org.apache.tools.ant.Target.execute(Target.java:390)
位于org.apache.tools.ant.Target.performTasks(Target.java:411)
位于org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
位于org.apache.tools.ant.Project.executeTarget(Project.java:1368)
位于org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
位于org.apache.tools.ant.Project.executeTargets(Project.java:1251)
位于org.apache.tools.ant.Main.runBuild(Main.java:809)
位于org.apache.tools.ant.Main.startAnt(Main.java:217)
位于org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
位于org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
总时间:2秒
来自多雪的中欧的许多感谢和亲切的问候也许这会在遇到这个错误时有所帮助: 我也有同样的问题,原因是Ant的类路径中有重复的JAR。在我的例子中,checkstyle-5.6-all.jar被添加到包含上述类的ANT_HOME\lib文件夹中,这导致了一些错误,因为它们之间存在重复的类和访问
在这种情况下,我建议为使用此库的Ant目标添加一个本地类路径变量,并尽可能保持Ant_HOME\lib的干净。我遇到了同样的问题,并且在数小时后解决了它。 只需使用最新的ANT(但不要使用Jenkins附带的ANT)
apache-ant-1.8.4似乎存在一些问题
但是在下载了最新的apache-ant-1.9.1之后,ant成功地构建了带有library项目的项目 使用ant build处理库项目的系统配置:
>ANT: 1.9.1
>Android SDK - 22 rev
>java 1.6.0_38
我发现像android-support-v7-appcompat这样的依赖库项目导致了这个问题。你确定更新Ant解决了你的问题吗?我更新到“ApacheAnt(TM)版本1.9.2,于2013年7月14日编译”,但我仍然有同样的问题。问题不仅仅在于
Ant_HOME/lib
。在我的例子中是${user.home}/