java.lang.IllegalAccessError:クラスEntityからフィールドConcreteEntity.instanceにアクセスしようとしました
さて、これが取引です。ConcreteEntity.instance
デフォルト内に存在するアクセスタイプdefaultのフィールドでありClassLoader
、Entity.getInstance
子に存在するメソッドであるにアクセスしようとしていますClassLoader
。
これらは両方とも同じパッケージに含まれていることに注意してください。ただし、IllegalAccessError
がスローされます。ClassLoader
と同じ内部にEntityクラスを実際にロードする必要のないこの問題の解決策はありConcreteEntity
ますか?
0 new #14 <Entity>
3 dup
4 aload_0
5 invokevirtual #18 <Adapter.getInstance>
8 checkcast #20 <sl>
11 getfield #24 <sl.d>
14 invokespecial #25 <Entity.<init>>
17 areturn
例外が発生したときにjclasslibを介して取得されたバイトコードは、「コンパイル後」に生成されます。
投稿をクリーンアップしてくれたGambに感謝します。