[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [m2e-users] Strange error with modular Jars having a module descriptor under META-INF/versions/xx
|
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.
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@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/m2e-users