Я использую модуль mod-mysql-postgresql как часть моего проекта. Во время запуска я замечаю, что mod-mysql-postgresql пытается загрузить io.vertx ~ lang-scala ~ 1.0.0. Я получаю следующую строку в сообщении о запуске
INFO: Загрузка io.vertx ~ lang-scala ~ 1.0.0. Пожалуйста, подождите...
Я не уверен, откуда идет io.vertx ~ lang-scala ~ 1.0.0. Если я включу io.vertx ~ lang-scala ~ 1.0.0 в раздел mod.json "includes", то я не получу эту ошибку. Но тогда приложение выходит из строя со следующей ошибкой
java.lang.LinkageError: loader constraint violation: loader (instance of org/vertx/java/platform/impl/ModuleClassLoader) previously initiated loading for a different type with name "org/vertx/scala/core/VertxAccess"
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:455)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:367)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at org.vertx.java.platform.impl.ModuleClassLoader.doLoadClass(ModuleClassLoader.java:136)
at org.vertx.java.platform.impl.ModuleClassLoader.loadFromModule(ModuleClassLoader.java:121)
at org.vertx.java.platform.impl.ModuleClassLoader.loadClass(ModuleClassLoader.java:108)
Детали среды:
Версия Vertx: 2.1.5
Версия mod-mysql-postgresql: 0.3.1
Запись Scala в файле vertx/conf/langs.properties
= io.vertx Scala ~ Ланг-scala_2.10 ~ 1.1.0-М1: org.vertx.scala.platform.impl.ScalaVerticleFactory
Проблема не в mod-mysql-postgresql. Vertx fatjar пытается использовать по умолчанию io.vertx ~ lang-scala ~ 1.0.0 mod для файлов scala. Чтобы переопределить настройку по умолчанию, я добавил langs.properties в src/main/resources/platform_lib со следующими строками
scala = io.vertx ~ lang-scala_2.10 ~ 1.1.0-M1: org.vertx.scala.platform.impl.ScalaVerticleFactory.scala = scala
И добавил io.vertx ~ lang-scala_2.10 ~ 1.1.0-M1 в mod.json
{"main": "Main", "auto-redeploy": true, "includes": "io.vertx ~ lang-scala_2.10 ~ 1.1.0-M1",}