модули java 9 с gradle не работают: ошибка: модуль не найден:

#java #maven #gradle #java-platform-module-system

Вопрос:

Я сделал минималистичный проект java gradle для тестирования модулей java 9.

Я сделал только 1 модуль и попытался протестировать его в зависимости от стороннего модуля. Но я продолжаю получать ошибку, когда пытаюсь построить или запустить проект:

module not found: commons.validator

вот мои файлы:

Demo.java»

 public class Demo {
    public static void main(String[] args) {
        boolean result = EmailValidator.getInstance().isValid("abcd");
        System.out.println(result);
    }
}
 

module-info.java:

 module auth.server.main {
    requires commons.validator;
}
 

сборка.сортировка:

 plugins {
    id 'java'
}

repositories {
    mavenCentral()
}

dependencies {
    // for email validation
    implementation 'commons-validator:commons-validator:1.7'
}

/*this is to let gradle infer the locations of the modules*/
java {
    modularity.inferModulePath.set(true)
}
 

Что не так и как это решить?

Комментарии:

1. Учитывая как изменение groupId соглашения Apache, так и наличие проверки компонентов, я был бы удивлен, если commons-validator:1.7 бы был достаточно новым для объявления модулей. По какой причине вы ожидаете commons.validator , что будете существовать?

2. @chrylis-cautiouslyoptimistic — Коммонс.валидатор автоматические название модуля, вы можете найти его с помощью команды jar --file=<filepath> --describe-module , а затем применяет правила именования, чтобы извлечь имя модуля библиотека работает хорошо, но когда я определяю модуль-Инфо в моем проекте, он перестает работать, то же самое происходит с Ломбоке, а также в среде IDE (intellij идея конечной) не находит также

Ответ №1:

Это может быть простым способом.

 plugins {
    id 'java'
    id "org.javamodularity.moduleplugin" version "1.1.1"
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'commons-validator:commons-validator:1.7'
}
 

Проверьте это : https://github.com/java9-modularity/gradle-modules-plugin

Комментарии:

1. Это сработало, но только после того, как я создал новый проект и скопировал в него старые файлы, я не знаю почему, но, по крайней мере, это сработало. Заставить gradle работать с модулями, не говоря уже о системе модулей java, — чертовски сложная задача.