Hi Alan,
On 15/11/2021 5:11 pm, Alan Bateman wrote:
On 14/11/2021 22:56, Claes Redestad wrote:
:
Alan: changing `Field.modifiers` still works, but dropping the final
modifier is not enough for this to work in the new impl. It won't be
hard to adapt to the new world. Users who relies on this today could
for example opt-out of the new MH-based impl using
`-Djdk.reflect.useDirectMethodHandle=false` and get the old behavior.
I've checked using a minimal reproducer I extracted from the Wicket
sources that this works.
Sure, but I don't think that would be enough as Wicket would also need
to open java.lang and java.lang.reflect to allow it continue to access
private members of Class and Field.
I think there may be a misunderstanding here, AFAICS they are using
reflection to remove the final-ness of a field in their own classes, not
modifying anything in Class or Field.
Cheers,
David
-----
I assume the test started emitting
"Illegal reflective access ..." warnings in JDK 9 and it stopped working
in JDK 16, and somewhere along the line the maintainers must have added
--add-opens to get it to work. It's just not tenable, hopefully the
project will find a way to re-write that test.
-Alan