Matthias Bläsing commented on NETBEANS-3234:

The call-chain on JDK 11 is this:
 * Package.getAnnotation(Class<A>)
 * Package.getPackageInfo()
 * ClassLoader.loadClass(Module, String) (JDK9+)
 * ClassLoader.findClass(String, String) (JDK9+)
 * ClassLoader.findClass(String)

A naive suggestion: Why not move everything that is currently located in 
org.netbeans.ProxyClassLoader.loadClass(String, boolean), apart from the 
ClassLoader.resolveClass(Class<?>) calls to a new 
org.netbeans.ProxyClassLoader.findClass(String), which delivers the missing 
override. Then org.netbeans.ProxyClassLoader.loadClass(String, boolean) would 
first call into the new findClass method and optionally resolve the returned 

> Apache NetBeans running on JDK 11 cannot access package classes
> ---------------------------------------------------------------
>                 Key: NETBEANS-3234
>                 URL: https://issues.apache.org/jira/browse/NETBEANS-3234
>             Project: NetBeans
>          Issue Type: Bug
>    Affects Versions: 11.1
>            Reporter: Boris Heithecker
>            Priority: Blocker
> If a package-info element is defined in some package, it cannot be properly 
> accessed at runtime:  
> java.lang.Package p = AnyClass.class.getPackage();
> should return a package object representing the actual package-info element 
> of that package. It is, for example, used by the JAXB runtime to read 
> XmlSchema annotations at package level. 
> This has been tested in oracle jdk11.0.4. Class java.lang.Package in Java 11 
> has a private field called "packageInfo" of type "Class<?>", which should 
> hold a reference to the actual package-info class object, i.e. 
> AnyPackage.package-info. In NetBeans, always wrongly references 
> "java.lang.Package$1PackageInfoProxy", which is a fallback reference set if 
> no actual package-info could be found. 
> The reason is most likely that neither 
> org.netbeans.JarClassLoader
> nor org.netbeans.ProxyClassLoader
> nor org.netbeans.StandardModule$OneModuleClassLoader (all in 
> platform/o.n.bootstrap)
> override method "java.lang.ClassLoader.findClass(String name)". The default 
> implementation throws an exceptions which causes the above fallback reference 
> to be set. 
> This is a serious issue. If it is not fixed, the platform will not be fully 
> comptabile, among others, with the JAXB RI and also JAX-WS RI. 

This message was sent by Atlassian Jira

To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org
For additional commands, e-mail: commits-h...@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:

Reply via email to