6
Java 9プロジェクトでは、に与えられた自動名vertx.web
が必要です。実行時にのみ、次のエラーが発生します。Java 9サービスプロバイダとGroovy拡張モジュール
Error occurred during initialization of boot layer
java.lang.module.FindException: Unable to derive module descriptor for /Users/user/.gradle/caches/modules-2/files-2.1/io.vertx/vertx-web/3.4.2/eee42405acff13d37eb2a62256189d419f91aa4d/vertx-web-3.4.2.jar
Caused by: java.lang.module.InvalidModuleDescriptorException: Provider class moduleFactory = io.vertx.groovy.ext.web.VertxPropertiesModuleFactory not in module
Groovy Extension Modulesを使用しているようです。これがファイルMETA-INF/services/org.codehaus.groovy.runtime.ExtensionModule
が存在する理由です。 Java9はService Loadingのためにこのファイルを不正に読み取ります。
このサービスファイルを依存関係にあるものとして無視する方法はありますか?変更できませんか?
META-INF/servicesは、サービスプロバイダ構成ファイルに使用されるJARファイル仕様で指定されています。 Groovy Extensionモジュールの設定ファイルはプロパティファイルのように見えますが、実際にはそれらを配置する場所を見つける必要があります。 –
そのような競合を避けるためにGroovyの仕様を変更する必要があると思います。これが行われたとしても、既存の依存関係はJava9ではまだ使用できません – thebignet
これはVert.x 3.5.0で修正され、Vert.xの匿名モジュールでJava 9モジュラーアプリケーションを作成することは可能ですhttps://github.com/ vert-x3/vertex-examples/tree/3.5.0-staging/java9-examples –