К сожалению, gradle
не рассматривает каждую банку как модуль (простыми словами). Если вы хотите узнать, как точно соответствует gradle
, строящему module-path
(в отличие от class-path
), вы, вероятно, захотите начать с здесь , особенно с isModuleJar метод. Довольно легко понять (хотя мне потребовалось почти два дня, чтобы настроить gradle и отладить проблему), что зависимость, которую вы пытаетесь использовать: gradle, говорит, что это не модуль (это не так, но Я тоже не уверен, что это правильно). Чтобы сделать его очень правильным, gradle
добавит вашу зависимость к CLASSPATH , но уже в следующей строке: не добавит вашу зависимость к module-path
, потому что если не работает фильтр в isModuleJar
.
Я не знаю, ошибка это или нет, или может быть это специально, но решение простое:
plugins.withType(JavaPlugin).configureEach {
java {
modularity.inferModulePath = true
}
tasks.withType(JavaCompile) {
doFirst {
options.compilerArgs = [
'--module-path', classpath.asPath,
]
classpath = files()
}
}
вы специально добавьте его в путь. Я отмечу это как дефект и посмотрим, что они скажут.
EDIT
Еще лучше, используйте плагин, написанный коммитером gradle:
plugins {
id 'java'
id 'de.jjohannes.extra-java-module-info' version "0.1"
}
А самый простой вариант в вашем случае это сделать:
extraJavaModuleInfo {
automaticModule("HdrHistogram-2.1.12.jar", "HdrHistogram")
}