2017-08-30 3 views
6

In einem Java 9-Projekt, würde ich gerne vertx.web, die automatische Name für Modul io.vertx:vertx-web:3.4.2 gegeben. Nur zur Laufzeit erhalte ich den folgenden Fehler.Java 9 Service Provider und Groovy Extension Modules

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 

Es scheint, dass VertX-Web-Nutzung von Groovy Extension Modules macht. Aus diesem Grund existiert die Datei META-INF/services/org.codehaus.groovy.runtime.ExtensionModule. Java9 liest diese Datei zu Unrecht für Service Loading.

Gibt es eine Möglichkeit, diese Servicedatei zu ignorieren, da sie in einer Abhängigkeit liegt und ich sie nicht ändern kann?

+1

META-INF/services wird in der JAR-Dateispezifikation für Service Provider-Konfigurationsdateien angegeben. Die Konfigurationsdateien für die Groovy Extension Modules scheinen Eigenschaftsdateien zu sein, sie müssen wirklich einen anderen Ort finden, um diese zu platzieren. –

+1

Also denke ich, dass Groovy Spec geändert werden muss, um solche Konflikte zu vermeiden. Selbst wenn dies getan wäre, wären bestehende Abhängigkeiten immer noch unbrauchbar mit Java9. – thebignet

+1

Dies wird in Vert.x 3.5.0 behoben, das Schreiben einer Java 9 modularen Anwendung mit Vert.x anonymen Modulen wird möglich sein https://github.com/ vert-x3/vertex-examples/tree/3.5.0-staging/java9-Beispiele –

Antwort

1

Update - November 16,2017

Sie auf die neueste Version von vertex-web aktualisieren können, die released

io.vertx:vertx-web:jar:3.5.0 

ist und ihre tracker für Updates über bekannte Fehler folgen.

Verwandte Themen