2017-08-30 89 views
6

W projekcie java 9, chciałbym wymagać vertx.web, która jest automatyczną nazwą dla modułu io.vertx:vertx-web:3.4.2. Tylko w czasie wykonywania otrzymam następujący błąd.Dostawca usług Java i moduły rozszerzeń 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 

Wygląda na to, że vertx-web korzysta z Groovy Extension Modules. Dlatego istnieje plik META-INF/services/org.codehaus.groovy.runtime.ExtensionModule. Java9 odczytuje ten plik niepoprawnie dla Service Loading.

Czy istnieje sposób, aby zignorować ten plik usługi, ponieważ jest on zależny i nie mogę go zmienić?

+1

META-INF/services jest określona w pliku JAR, który ma być użyty w plikach konfiguracyjnych dostawcy usług. Pliki konfiguracyjne dla modułów rozszerzeń Groovy wydają się być plikami właściwości, naprawdę muszą znaleźć inne miejsce do umieszczenia tych plików. –

+1

Sądzę więc, że Groovy spec musi się zmienić, aby uniknąć takiego konfliktu. Nawet gdyby to zostało zrobione, istniejące zależności nadal byłyby nieużyteczne z Java9 – thebignet

+1

zostanie to naprawione w Vert.x 3.5.0, pisząc modułową aplikację Java 9 z anonimowymi modułami Vert.x będzie możliwe https://github.com/ Przykłady vert-x3/vertx-examples/tree/3.5.0-staging/java9 –

Odpowiedz

1

Aktualizacja - listopad 16,2017

można uaktualnić do najnowszej wersji vertex-web która released

io.vertx:vertx-web:jar:3.5.0 

a następnie ich tracker aktualizacje ponad znanych błędów.