java.lang.IllegalAccessError: tried to access field ConcreteEntity.instance from class Entityjava.lang.IllegalAccessError: cố truy cập trường ConcreteEntity.instance từ lớp Entity
Ok đây là giao dịch. Tôi đang cố gắng truy cập ConcreteEntity.instance
là trường có mặc định kiểu truy cập tồn tại bên trong mặc định ClassLoader
và Entity.getInstance
là một phương thức tồn tại trong một trẻ ClassLoader
.
Bây giờ, hãy nhớ rằng cả hai đều trong cùng một gói, tuy nhiên, IllegalAccessError
đang bị ném. Có một giải pháp cho vấn đề này mà không liên quan đến tôi thực sự tải lớp thực thể trong cùng một ClassLoader
là 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
Bytecode được truy xuất thông qua jclasslib at là ngoại lệ được tạo "Sau khi được biên dịch".
Cảm ơn bạn Gamb đã dọn dẹp bài đăng.
Bạn có thay đổi lớp học của bạn trong thời gian chạy sử dụng một số loại trình biên dịch bytecode? –
Có tôi. Nhưng bytecode được chế tác là hoàn hảo. – Justin
Bạn đang cố gắng truy cập một trường con trong lớp cha? Tôi nghĩ đó là điều không được phép. –