Ошибка портирования приложения JavaFX под модули Java >= 9

Переписываю рабочее JavaFX приложение под Java 9 (с модульными плюшками)

Есть build.gradle примерно такого сорта:

plugins {
    id 'application'
    id 'java'
    id 'org.openjfx.javafxplugin' version '0.0.9'
}

repositories {
    mavenLocal()
    maven {
        url = uri('https://repo.maven.apache.org/maven2/')
    }
    flatDir {
        dirs 'libs'
    }
}

group = 'ru.mydomain.myapp.fx'
version = '0.7'
description = 'myAppFX'
java.sourceCompatibility = JavaVersion.VERSION_1_9

java {
    modularity.inferModulePath = true
}

sourceSets {
    main {
        java {
            srcDirs("src/common/java", "src/fx/java")
        }
        resources {
            srcDirs = ['src/fx/resources']
        }
    }
}

dependencies {
    implementation 'org.slf4j:slf4j-api:1.7.25'
    //blah-blah
}

javafx {
    version = "15.0.1"
    modules = [ 'javafx.controls', 'javafx.fxml', 'javafx.swing']
}
application {
    mainModule = 'mymodule.javafx'
    mainClass = 'ru.mydomain.myapp.fx.Main'
}

Есть module-info.java, который как и положено лежит в корне исходников

module mymodule.javafx {
    requires javafx.controls;
    requires javafx.fxml;
    requires javafx.swing;
    requires slf4j.api;

    // Export the package (needed by JavaFX to start the Application)
    // Replace "exports" with "opens" if "@FXML" is used in this module
    opens ru.mydomain.myapp.fx;

}

При компиляции получаю ошибку:

    error: module not found: slf4j.api
    requires slf4j.api;
                  ^`

Гугление ошибки приводит к тому, что зависимость slf4j помещается в модуль noname, который не виден во время компиляции.

Как быть? Какие идеи?

P.S. В версиях старше 1.8 slf4j декларирует модуль org.slf4j, по ряду причин я могу использовать только версию 1.7, где slf4j не декларирует module-info - проблема как раз в том, что библиотека попадает в непоименованный (автоматический) модуль - просто не соображу как быть в таком случае.


Ответы (0 шт):