maven-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Marcel Kolsteren (JIRA)" <>
Subject [jira] [Created] (MCOMPILER-321) Problematic Java 9 modules are silently ignored
Date Sat, 27 Jan 2018 19:53:00 GMT
Marcel Kolsteren created MCOMPILER-321:

             Summary: Problematic Java 9 modules are silently ignored
                 Key: MCOMPILER-321
             Project: Maven Compiler Plugin
          Issue Type: Bug
            Reporter: Marcel Kolsteren

Before the compilation starts, the compiler plugin prepares the module path and the class
path. Unfortunately, this process is very lenient. If the plugin cannot find a module that
is specified in the module-info file, it doesn't report this problem, and it just carries
on. In the end, the compiler will give a "module not found", giving no clue about the root

As an example, I attached a simple maven project with a module info file that refers to an
automatic module named {{jython-standalone}}. The dependencies contain a jar file {{jython-standalone-2.7.0.jar}}.
That jar file contains no module information, and it would normally be resolvable as an automatic
module. However, when building the project, the Java compiler fails with this error:

{{module not found: jython.standalone}}

The root cause of the error is that the jar file contains a class at top level, which is illegal
for a module. So, the error message "module not found" is misleading.

I think this is a bug, because the maven-compiler-plugin fails to perform its task of building
a correct module path, but doesn't tell, and just carries on. Instead, it should stop, and
give an informative error message.

Relevant source code:

* [], class {{CompilerMojo}}
* [], class {{LocationManager}} and {{MainClassModuleNameExtractor}}
* []

The {{MainClassModuleNameExtractor}} uses the {{ModuleFinder}} class of the JDK to find modules.
I think that these two error situations should lead to an error and a clear description of
possible causes:

* {{ModuleFinder#findAll}} returns an empty set.
* {{ModuleFinder#findAll}} results in a {{FindException}}. When this happens is well documented
in the {{ModuleFinder#of}} method. This exception is currently swallowed.

This message was sent by Atlassian JIRA

View raw message