<div dir="ltr"><div class="gmail_default" style="font-family:georgia,serif;color:#20124d">Thanks, and yes, I know.</div><div class="gmail_default" style="font-family:georgia,serif;color:#20124d">It’s still not clear how to rewrite the “offending” part…<br><br><div style="padding:0px 0px 0px 2px"><div style="color:rgb(0,0,0);font-family:Consolas;font-size:10pt;white-space:pre"><p style="margin:0px"><span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">                    </span><span style="color:rgb(127,0,85);font-weight:bold;text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">final</span><span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)"> </span><span style="background-color:rgb(212,212,212);text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">MethodHandle</span><span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)"> </span><span style="color:rgb(106,62,62);text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">mh</span><span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)"> = MethodHandles.</span><span style="font-style:italic;text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">lookup</span><span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">().findVirtual(Unsafe.</span><span style="color:rgb(127,0,85);font-weight:bold;text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">class</span><span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">, </span><span style="color:rgb(42,0,255);text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">"defineAnonymousClass"</span><span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">,</span></p><p style="margin:0px"><span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">                        MethodType.</span><span style="font-style:italic;text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">methodType</span><span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">(Class.</span><span style="color:rgb(127,0,85);font-weight:bold;text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">class</span><span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">, Class.</span><span style="color:rgb(127,0,85);font-weight:bold;text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">class</span><span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">, </span><span style="color:rgb(127,0,85);font-weight:bold;text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">byte</span><span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">[].</span><span style="color:rgb(127,0,85);font-weight:bold;text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">class</span><span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">, Object[].</span><span style="color:rgb(127,0,85);font-weight:bold;text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">class</span><span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">));</span></p><p style="margin:0px"><span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">                    </span><span style="color:rgb(127,0,85);font-weight:bold;text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">final</span><span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)"> Field </span><span style="color:rgb(106,62,62);text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">f</span><span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)"> = Unsafe.</span><span style="color:rgb(127,0,85);font-weight:bold;text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">class</span><span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">.getDeclaredField(</span><span style="color:rgb(42,0,255);text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">"theUnsafe"</span><span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">);</span></p><p style="margin:0px"><span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">                    </span><span style="color:rgb(106,62,62);text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">f</span><span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">.setAccessible(</span><span style="color:rgb(127,0,85);font-weight:bold;text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">true</span><span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">);</span></p><p style="margin:0px"><span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">                    </span><span style="color:rgb(127,0,85);font-weight:bold;text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">return</span><span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)"> </span><span style="color:rgb(106,62,62);text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">mh</span><span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">.bindTo(</span><span style="color:rgb(106,62,62);text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">f</span><span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">.get(</span><span style="color:rgb(127,0,85);font-weight:bold;text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">null</span><span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(244,200,45)">));</span></p><p style="margin:0px"></p></div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le mer. 24 janv. 2024 à 14:22, Remi Forax <<a href="mailto:forax@univ-mlv.fr">forax@univ-mlv.fr</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div style="font-family:arial,helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)"><div><br></div><div><br></div><hr id="m_-6782706040583600309zwchr"><div><blockquote style="border-left:2px solid rgb(16,16,255);margin-left:5px;padding-left:5px;color:rgb(0,0,0);font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt"><b>From: </b>"Luc Chapon" <<a href="mailto:sxilderik@gmail.com" target="_blank">sxilderik@gmail.com</a>><br><b>To: </b>"nashorn-dev" <<a href="mailto:nashorn-dev@openjdk.org" target="_blank">nashorn-dev@openjdk.org</a>><br><b>Sent: </b>Wednesday, January 24, 2024 1:02:48 PM<br><b>Subject: </b>Unsafe.defineAnonymousClass no longer exists in Java17!<br></blockquote></div><div><blockquote style="border-left:2px solid rgb(16,16,255);margin-left:5px;padding-left:5px;color:rgb(0,0,0);font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt"><div dir="ltr"><div class="gmail_default" style="font-family:georgia,serif;color:rgb(32,18,77)">Hello all</div><div class="gmail_default" style="font-family:georgia,serif;color:rgb(32,18,77)"><br></div><div class="gmail_default" style="font-family:georgia,serif;color:rgb(32,18,77)">First message here</div><div class="gmail_default" style="font-family:georgia,serif;color:rgb(32,18,77)"><br></div><div class="gmail_default" style="font-family:georgia,serif;color:rgb(32,18,77)">We are facing a problem re Nashorn (latest) and java17</div><div class="gmail_default" style="font-family:georgia,serif;color:rgb(32,18,77)"><br></div><div class="gmail_default" style="font-family:georgia,serif;color:rgb(32,18,77)">In Context.java, line 330, you try to get a handle to a no longer existent method, Unsafe.defineAnonymousClass</div><div class="gmail_default" style="font-family:georgia,serif;color:rgb(32,18,77)"><br></div><div class="gmail_default" style="font-family:georgia,serif;color:rgb(32,18,77)">And fail of course.</div><div class="gmail_default" style="font-family:georgia,serif;color:rgb(32,18,77)"><br></div><div class="gmail_default" style="font-family:georgia,serif;color:rgb(32,18,77)">I’m trying to rewrite this part for our own temporary urgent need according to this.<br><br><a href="https://www.oracle.com/java/technologies/javase/17-relnote-issues.html" target="_blank">https://www.oracle.com/java/technologies/javase/17-relnote-issues.html</a><br></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div class="gmail_default" style="font-family:georgia,serif;color:rgb(32,18,77)"><div style="box-sizing:border-box;margin:0px;padding:0px;list-style:none;background-repeat:no-repeat;color:rgb(0,0,0);font-family:OracleSansVF,OracleSansVFCyGr,OracleSansFB,-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue",sans-serif;font-size:14.63px;background-color:rgb(251,249,248)">core-libs</div></div><div class="gmail_default" style="font-family:georgia,serif;color:rgb(32,18,77)"><b style="box-sizing:border-box;margin:0px;padding:0px;list-style:none;background-repeat:no-repeat;color:rgb(0,0,0);font-family:OracleSansVF,OracleSansVFCyGr,OracleSansFB,-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue",sans-serif;font-size:14.63px;background-color:rgb(251,249,248)"><a href="https://www.oracle.com/java/technologies/javase/17-relnote-issues.html#JDK-8243287" style="box-sizing:border-box;margin:0px;padding:0px;list-style:none;background-repeat:no-repeat;color:rgb(0,107,143);text-decoration-line:none" target="_blank"><span style="box-sizing:border-box;margin:0px;padding:0px;list-style:none;background-repeat:no-repeat">➜</span></a> Removal of sun.misc.Unsafe::defineAnonymousClass</b></div><div class="gmail_default" style="font-family:georgia,serif;color:rgb(32,18,77)"><p style="box-sizing:border-box;margin:0px 0px 1.1em;padding:0px;list-style:none;background-repeat:no-repeat;line-height:1.55;color:rgb(0,0,0);font-family:OracleSansVF,OracleSansVFCyGr,OracleSansFB,-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue",sans-serif;font-size:14.63px;background-color:rgb(251,249,248)"><code style="box-sizing:border-box;margin:0px;padding:0px;list-style:none;background-repeat:no-repeat">sun.misc.Unsafe::defineAnonymousClass</code> API has been removed in JDK 17. The API replacement is <code style="box-sizing:border-box;margin:0px;padding:0px;list-style:none;background-repeat:no-repeat">java.lang.invoke.MethodHandles.Lookup::defineHiddenClass</code> and <code style="box-sizing:border-box;margin:0px;padding:0px;list-style:none;background-repeat:no-repeat">java.lang.invoke.MethodHandles.Lookup::defineHiddenClassWithClassData</code>.</p></div></blockquote><div class="gmail_default" style="font-family:georgia,serif;color:rgb(32,18,77)"><br></div><div class="gmail_default" style="font-family:georgia,serif;color:rgb(32,18,77)">Are you aware of the problem? Is there a fix already available?</div></div></blockquote><div><br></div><div>Hello,<br></div><div>defineAnonymousClass have been replaced by Lookup.defineHiddenClass(...) [1] which is a public API.</div><br><blockquote style="border-left:2px solid rgb(16,16,255);margin-left:5px;padding-left:5px;color:rgb(0,0,0);font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt"><div dir="ltr"><div class="gmail_default" style="font-family:georgia,serif;color:rgb(32,18,77)"><br></div><div class="gmail_default" style="font-family:georgia,serif;color:rgb(32,18,77)">Thank you!</div></div></blockquote><div><br></div><div>regards,<br></div><div>Rémi<br></div><div><br></div><blockquote style="border-left:2px solid rgb(16,16,255);margin-left:5px;padding-left:5px;color:rgb(0,0,0);font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt"><div dir="ltr"><div class="gmail_default" style="font-family:georgia,serif;color:rgb(32,18,77)"><br></div><div class="gmail_default" style="font-family:georgia,serif;color:rgb(32,18,77)">Luc Chapon</div><div class="gmail_default" style="font-family:georgia,serif;color:rgb(32,18,77)">ChapsVision</div><div class="gmail_default" style="font-family:georgia,serif;color:rgb(32,18,77)">Suresnes, France</div></div></blockquote><div><br></div><div>[1] <a href="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.." target="_blank">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..</a>.)<div><br></div></div><div><br></div></div></div></div></blockquote></div>