2017-08-30 4 views
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のためにこのファイルを不正に読み取ります。

このサービスファイルを依存関係にあるものとして無視する方法はありますか?変更できませんか?

+1

META-INF/servicesは、サービスプロバイダ構成ファイルに使用されるJARファイル仕様で指定されています。 Groovy Extensionモジュールの設定ファイルはプロパティファイルのように見えますが、実際にはそれらを配置する場所を見つける必要があります。 –

+1

そのような競合を避けるためにGroovyの仕様を変更する必要があると思います。これが行われたとしても、既存の依存関係はJava9ではまだ使用できません – thebignet

+1

これはVert.x 3.5.0で修正され、Vert.xの匿名モジュールでJava 9モジュラーアプリケーションを作成することは可能ですhttps://github.com/ vert-x3/vertex-examples/tree/3.5.0-staging/java9-examples –

答えて

1

更新 - 11月16,2017

あなたはreleased

io.vertx:vertx-web:jar:3.5.0 

のあるvertex-webの最新バージョンにアップグレードして、既知のバグ以上更新のために彼らのtrackerに従うことができます。

関連する問題