> On Nov 14, 2015, at 7:20 AM, Alan Bateman <[email protected]> wrote: > > On 13/11/2015 21:58, Robert Scholte wrote: >> : >> >> Previous versions of JDK9 gave me the following output: >> >> classes -> java.base >> <unnamed> (classes) >> -> java.io >> -> java.lang >> -> sun.misc JDK internal API >> (java.base) >> >> >> The current b86 gives me: >> >> classes -> java.base >> <unnamed> (classes) >> -> java.io >> -> java.lang >> -> sun.misc >> >> So why this change? And is there another way to detect the usage of >> non-accessible classes? >> >> The maven-plugin has a parameter called failOnWarning (default:true) which >> should break the build in order to help developers to change their code when >> they rely on internal classes. > > In the regular JDK 9 EA builds then a usage of sun.misc.BASE64Decoder will be > reported as a usage of a JDK internal API. > > Not so with the Jigsaw builds because package sun.misc is temporarily > exported by module java.base. This means that all public types in that > package are accessible. This might seem surprising but it is because we're > not there yet with JEP 260 [1]. Once JEP 260 is further along thne the > critical internal APIs listed in JEP 260 will be accessible. The non-critical > internal APIs will be encapsulated.
I think jdeps should continue to flag the critical JDK internal APIs listed in JEP 260 but they are accessible at runtime. I file a bug: https://bugs.openjdk.java.net/browse/JDK-8143011 > > For the Maven plugin then maybe it might be better to choose a JDK-internal > type that is not in sun.misc or sun.reflect. That would keep your test stable > while we work through all the transition issues. Yes that allows to work through the transition. Mandy
