[JIRA] (SLF4J-407) Jigsaw modules contain clashing package

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[JIRA] (SLF4J-407) Jigsaw modules contain clashing package

JIRA noreply-jira@qos.ch

    [ https://jira.qos.ch/browse/SLF4J-407?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18788#comment-18788 ]

Ceki Gülcü commented on SLF4J-407:
----------------------------------

 

As you observed, under Java 9, when two or more slf4j provider modules are present on the module path, the following error message is output by the JVM:

{code}
# java  -p target/classes\;lib/slf4j-api-1.8.0-alpha2.jar\;lib/slf4j-simple-1.8.0-alpha2.jar\;lib/slf4j-jdk14-1.8.0-alpha2.jar  -m org.inttest/pkg.Main
Error occurred during initialization of boot layer
java.lang.reflect.LayerInstantiationException: Package org.slf4j.impl in both module org.slf4j.jul and module org.slf4j.simple
{code}

Note that the providers are of version 1.8.0-alpah2.

The error occurring within the JVM boot phase, slf4j-api cannot print any relevant warning message.




> Jigsaw modules contain clashing package
> ---------------------------------------
>
>                 Key: SLF4J-407
>                 URL: https://jira.qos.ch/browse/SLF4J-407
>             Project: SLF4J
>          Issue Type: Bug
>          Components: Implementations
>    Affects Versions: 1.8.0-alpha2
>            Reporter: Stephen Colebourne
>            Assignee: Ceki Gülcü
>             Fix For: 1.8.0-alpha3
>
>
> Looking at the slf4j-jdk14 and slf4j-nop artifacts, they both appear to contain the package `org.slf4j.impl`. Jigsaw will refuse to load two modules that contain the same package, so this will be a problem.
> I know that SLF4J does not intend users to load both of these modules at the same time. But the current setup means that it will be the JPMS runtime that rejects it, meaning that there is no chance for SLF4J to output a helpful message (as I believe it does today).
> The solution to this would appear to be to move the `org.slf4j.impl` package to `org.slf4j.jul.impl` and `org.slf4j.nop.impl`. As the impl package is not exported, this should not affect any user code (except code that would have been affected anyway).
> I imagine this affects other slf4j artifacts.
> I also note that [this module-info.java|https://github.com/qos-ch/slf4j/blob/1_8_0-SNAPSHOT/slf4j-jdk14/src/main/java/module-info.java] exports the `org.slf4j.jul` package, which seems unnecessary (simple and nop do not export their package).
> See [here|http://blog.joda.org/2017/04/java-se-9-jpms-module-naming.html] for more information on naming.



--
This message was sent by Atlassian JIRA
(v7.3.1#73012)
_______________________________________________
slf4j-dev mailing list
[hidden email]
http://mailman.qos.ch/mailman/listinfo/slf4j-dev