Skip to content

delombok does not find all modules on module path #824

@A-Willems

Description

@A-Willems

After we migrated our project to the Java Module System we encountered that not all modules on the modulePath are recognized.

The attached example is a simple gradle project that can be used to reproduce the problem: module-sample.zip

First, gradlew :application:run shows that the module-info.java is implemented correctly and the program executes as it should.

My module-info.java looks like this:

module delombok.sample.app {
    exports delombok.sample;

    requires lombok;
    requires org.slf4j;
    requires com.google.gson;
    requires org.apache.commons.lang3;

    opens delombok.sample to com.google.gson;
}

My delombok task allows to run with or without modulePath, so it's easier to reproduce the problem from command line:

delombok {
    dependsOn tasks.findByName('cleanDelombok')

    verbose = true

    if (project.hasProperty('withModulePath')) {

        modulePath = configurations.runtimeClasspath
    }
}

Calling gradlew :application:delombok does not set the delombok modulePath and produces the following output:

/home/user/tmp/module-sample/application/src/main/java/module-info.java:5: error: module not found: org.slf4j
    requires org.slf4j;
                ^
/home/user/tmp/module-sample/application/src/main/java/module-info.java:6: error: module not found: com.google.gson
    requires com.google.gson;
                       ^
/home/user/tmp/module-sample/application/src/main/java/module-info.java:7: error: module not found: org.apache.commons.lang3
    requires org.apache.commons.lang3;
                               ^

This shows, that there are three modules (org.slf4j, com.google.gson and org.apache.commons.lang3) that cannot be found. In this case it is not surprising as the modulePath was not set.

Finally calling gradlew -PwithModulePath :application:delombok produces:

/home/user/tmp/module-sample/application/src/main/java/module-info.java:5: error: module not found: org.slf4j
    requires org.slf4j;
                ^
/home/user/tmp/module-sample/application/src/main/java/module-info.java:6: error: module not found: com.google.gson
    requires com.google.gson;
                       ^

In this case, the module path of the delombok task is set (which I confirmed in the temporarily generated delombok.options). Now, the Apache Commons module was found, but SLF4J and GSON were still missing.

The question is: Am I doing something wrong or is this a problem within the delombok task?

Regards,
Achim

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions