Andreas Sewe created NETBEANS-3679:
--------------------------------------

             Summary: NetBeans plugin classloader does not work with 
multi-release JARs
                 Key: NETBEANS-3679
                 URL: https://issues.apache.org/jira/browse/NETBEANS-3679
             Project: NetBeans
          Issue Type: Bug
          Components: core
    Affects Versions: 11.2
            Reporter: Andreas Sewe


I have a plugin which uses Apache Log4J 2, which has the following (nice) API 
to request a {{Logger}} from the {{LogManager}}:
{code:java}
private static final Logger LOGGER = LogManager.getLogger();
{code}
Unfortunately, running NetBeans 11.2 on Java 13 causes the plugin to fail, with 
an {{ExceptionInInitializerError}}:
{noformat}
Caused by: java.lang.UnsupportedOperationException: No class provided, and an 
appropriate one cannot be found.
at org.apache.logging.log4j.LogManager.callerClass(LogManager.java:555)
at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:580)
at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:567)
{noformat}
AFAICT, the reason is the same as for a [similar bug I recently reported in 
IntelliJ|https://youtrack.jetbrains.com/issue/IDEA-220300]: NetBeans plugin 
classloader cannot handle multi-release JARs as per [JEP 
238|https://openjdk.java.net/jeps/238], which is exactly what Log4J's 
{{StackLocatorUtil.getCallerClass}} needs to work on both Java 8 and 9 or newer 
(a more detailed analysis in the IntelliJ bug).

The effect of this limitation is that your NetBeans plugins cannot depend on 
*any* multi-release JARs like Log4J.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
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:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists

Reply via email to