Have you tried reproducing the problem with a plain Eclipse Java project? I
could be wrong but that smells like a JDT issue to me.

On Thu, Apr 18, 2019, 05:24 Thorsten Heit <thorsten.h...@vkb.de> wrote:

> Hi,
>
> I see a strange behaviour in Eclipse (2019-03) that I don't know where it
> comes from nor how to solve it:
>
> Assume you have the following dependency in your pom.xml:
>
> <dependency>
>         <groupId>org.slf4j</groupId>
>         <artifactId>slf4j-api</artifactId>
>         <version>1.8.0-beta4</version>
> </dependency>
>
> This Jar contains a module descriptor for Java >= 9 not in the root
> folder, i.e. "/", but under META-INF/versions/9.
>
> Add the following entry to your module-info.java:
>
> module myproject {
>         (...)
>         requires transitive org.slf4j;
> }
>
> Create a Java class containing the following snippet:
>
>         import org.slf4j.Logger;
>         import org.slf4j.LoggerFactory;
>
>         private static final Logger LOG =
> LoggerFactory.getLogger(MyApplication.class);
>
>
> Compiling the project with Maven on the command line works fine: The
> dependency is correctly added to the module path,
>
> When you look in Eclipse into the project properties dialog (Properties ->
>  Java Build Path -> Libraries), you see that the Jar is listed under
> Classpath / Maven Dependencies as being modular ("Is modular - non
> modifiable"). Now open the module descriptor and the Java file. What's
> happening is:
>
> 1) Eclipse complains in the module info editor that it cannot resolve
> org.slf4j to a module.
> 2) In the Java editor the imports are marked as not accessible.
> 3) The Logger class in the field is underlined and marked as an error
> because Logger cannot be resolved to a type. Obviously a subsequent error
> of #2.
> 4) All occurrences of the LOG variable in the Java file are marked as
> errors in the Java editor view.
>
> You only see this in the module-info and Java editors when you open them;
> there's nothing shown in the problems view or in the package explorer.
>
> As quick fix for the errors at the import statements Eclipse suggests to
> add slf4j.api to the module-info.java, i.e. an entry derived from the jars
> file name. If you do this, the errors in the Java editor (#2-#4 above)
> disappear, but the module-info.java is then marked with an error icon in
> the package explorer, and a new error is (correctly) show in the problems
> view:
> "slf4j.api cannot be resolved to a module"
>
> Funny:
> If you comment out the original entry "requires org.slf4j" in the module
> descriptor file, then all referenctes to org.slf4j.Logger[Factory] are now
> listed as errors in the package explorer and problems view, and
> additionally the self-generated entry "requires slf4j.api"...
>
>
> Erm...
> Do you know that's going on here? Is this a bug in m2e? Or Eclipse itself?
>
>
> Regards
>
> Thorsten_______________________________________________
> m2e-users mailing list
> m2e-users@eclipse.org
> To change your delivery options, retrieve your password, or unsubscribe
> from this list, visit
> https://www.eclipse.org/mailman/listinfo/m2e-users
_______________________________________________
m2e-users mailing list
m2e-users@eclipse.org
To change your delivery options, retrieve your password, or unsubscribe from 
this list, visit
https://www.eclipse.org/mailman/listinfo/m2e-users

Reply via email to