Ah, so that's the difference (javadocs don't included "final" in method summaries so I didn't notice). Guess this means I get to make an enhancement request.
On Thu, Feb 22, 2018 at 9:53 PM, Sundararajan Athijegannathan < sundararajan.athijegannat...@oracle.com> wrote: > Hi, > > Two things: > > * Nashorn allows access only to public methods and fields (of exported) > classes only. > > * With Java.extend, Nashorn adds public overrides of all non-final > protected methods of the superclass. > ClassLoader.definePackage is non-final protected method. > ClassLoader.defineClass is final protected method. > Hence no override of ClassLoader.defineClass added to generated subclass. > > -Sundar > > > On 23/02/18, 7:09 AM, Nathan Faulkner wrote: > >> When extending java.lang.ClassLoader, I can't seem to execute defineClass. >> Here's my test case showing the issue. >> >> var superLoader = Java.super(new (Java.extend(java.lang.ClassLo >> ader))(){}); >> // defineClass on the super object doesn't exist for some reason >> print("defineClass: " + (superLoader.defineClass !== undefined)); >> // definePackage is protected, but isn't undefined, so that isn't the >> issue >> print("definePackage: " + (superLoader.definePackage !== undefined)); >> >> >> and here's the output of "java -version": >> java version "1.8.0_161" >> Java(TM) SE Runtime Environment (build 1.8.0_161-b12) >> Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode) >> >