Unsafe.defineAnonymousClass no longer exists in Java17!

Remi Forax forax at univ-mlv.fr
Wed Jan 24 13:22:41 UTC 2024


> From: "Luc Chapon" <sxilderik at gmail.com>
> To: "nashorn-dev" <nashorn-dev at openjdk.org>
> Sent: Wednesday, January 24, 2024 1:02:48 PM
> Subject: Unsafe.defineAnonymousClass no longer exists in Java17!

> Hello all

> First message here

> We are facing a problem re Nashorn (latest) and java17

> In Context.java, line 330, you try to get a handle to a no longer existent
> method, Unsafe.defineAnonymousClass

> And fail of course.

> I’m trying to rewrite this part for our own temporary urgent need according to
> this.

> [ https://www.oracle.com/java/technologies/javase/17-relnote-issues.html |
> https://www.oracle.com/java/technologies/javase/17-relnote-issues.html ]

>> core-libs
>> [
>> https://www.oracle.com/java/technologies/javase/17-relnote-issues.html#JDK-8243287
>> | ➜ ] Removal of sun.misc.Unsafe::defineAnonymousClass

>> sun.misc.Unsafe::defineAnonymousClass API has been removed in JDK 17. The API
>> replacement is java.lang.invoke.MethodHandles.Lookup::defineHiddenClass and
>> java.lang.invoke.MethodHandles.Lookup::defineHiddenClassWithClassData .

> Are you aware of the problem? Is there a fix already available?

Hello, 
defineAnonymousClass have been replaced by Lookup.defineHiddenClass(...) [1] which is a public API. 

> Thank you!

regards, 
Rémi 

> Luc Chapon
> ChapsVision
> Suresnes, France

[1] https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/invoke/MethodHandles.Lookup.html#defineHiddenClass(byte[],boolean,java.lang.invoke.MethodHandles.Lookup.ClassOption...) 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/nashorn-dev/attachments/20240124/dde0f5ff/attachment.htm>


More information about the nashorn-dev mailing list