java.lang.IllegalAccessError: tried to access field ConcreteEntity.instance from class Entityjava.lang.IllegalAccessError:クラスEntityからフィールドConcreteEntity.instanceにアクセスしようとしました
私は、デフォルトのClassLoader
の中に存在するアクセスタイプdefaultのフィールドであるConcreteEntity.instance
にアクセスしようとしています。Entity.getInstance
は、子にあるメソッドClassLoader
です。
ここで、それらは同じパッケージに入っていますが、IllegalAccessError
がスローされていることに注意してください。この問題の解決策はありますか?ClassLoader
と同じエンティティクラスを実際にロードすることはありません。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で取得されたバイトコードは、例外として「コンパイル後に」生成されました。
投稿を削除していただきありがとうございます。
あなたはバイトコードコンパイラのいくつかの種類を使用して、実行時に、あなたのクラスを変更しているセクション5.3、the jvm spceificationからの引用? –
はい私はそうです。しかし、操作されるバイトコードは完璧です。 – Justin
スーパークラス内のサブクラスフィールドにアクセスしようとしていますか?それは許されないことだと思う。 –