我有一个非常奇怪的错误,因为它只发生在从生成的.apk安装应用程序后.当我尝试通过IDE运行应用程序时,它工作正常.
java.lang.IllegalAccessError: Method 'int <package>.BaseActivity$Companion.getANIMATION_SLIDE_FROM_RIGHT()' is inaccessible to class '<package>.MyActivity' (declaration of '<package>.MyActivity' appears in /data/app/<package>-mg7eYmJ8hX5WvkNWNZWMVg==/base.apk!classes3.dex)
正如您所看到的,有一个名为BaseActivity的类,如下所示:
open class BaseActivity : AppCompatActivity() { companion object { @JvmStatic protected val ANIMATION_DEFAulT = 0 @JvmStatic protected val ANIMATION_SLIDE_FROM_RIGHT = 1 @JvmStatic protected val ANIMATION_SLIDE_FROM_BottOM = 2 } protected open var animationKind = ANIMATION_DEFAulT // Some other stuff}
现在每个活动都扩展了这个类,并经常覆盖animationKind,如下所示:
class MyActivity: BaseActivity() { overrIDe var animationKind = ANIMATION_SLIDE_FROM_RIGHT // Some other stuff}
问题是MyActivity无法访问ANIMATION_SLIDE_FROM_RIGHT.我将重复它只发生在手动生成的.apk上.有趣的是我没有使用multIDex,但错误似乎表明BaseActivity在classes3.dex中.这是我的gradle文件:
apply plugin:’com.androID.application’
apply plugin:’kotlin-androID’
apply plugin:’kotlin-android-extensions’
申请插件:’kotlin-kapt’
androID { compileSdkVersion 28 defaultConfig { applicationID <package> versionCode <versionCode> versionname <versionname> minSdkVersion 21 targetSdkVersion 28 } buildTypes { release { MinifyEnabled false proguardfiles getDefaultProguardfile('proguard-androID.txt'), 'proguard-rules.pro' } } androIDExtensions { experimental = true }}dependencIEs { // DependencIEs}
我尝试使用multIDexEnabled false / true,但唯一的变化是在false状态下,classes3.dex后缀消失了.
UPDATE
当然,当我将MyActivity的animationKind属性更改为1时,一切正常.
更新2
删除@JvmStatic并保护可见性后,它可以正常工作.
解决方法:
从official Kotlin documentation:
Java allows accessing protected members from other classes in the same
package and Kotlin doesn’t, so Java classes will have broader access
to the code
因此,请确保您的BaseActivity和MyActivity位于同一个包中.
如果两个活动不在同一个包中,那么它将通过从Studio直接运行完美运行,但是当您生成.apk并尝试通过安装该apk在设备上运行时它将崩溃(IllegalAccessError).
总结以上是内存溢出为你收集整理的java – IllegalAccessError:类无法访问方法全部内容,希望文章能够帮你解决java – IllegalAccessError:类无法访问方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)