Ошибка, которую я получаю, возможно, связана с отсутствием конфигурации, несовместимым модулем ... Через несколько часов я не могу понять это.
При sbt runAll
я получаю следующую трассировку стека:
com.google.inject.CreationException: Невозможно создать инжектор, см. Следующие ошибки:
1) Ошибка в пользовательском поставщике, scala.MatchError: Сообщение (класса sun.reflect.generics.reflectiveObjects.TypeVariableImpl) в com.lightbend.lagom.javadsl.server.ServiceGuiceSupport.bindServices (ServiceGuiceSupport.java:com.google.inject.util.Modules $ OverrideModule -> UserModule) при нахождении com.lightbend.lagom.internal.javadsl.server.ResolvedServices для второго параметра com.lightbend.lagom.internal.server.ServiceRegistrationModule $ RegisterWithServiceRegistry.ServiceRegistrationModule.scala: 56) по адресу com.lightbend.lagom.internal.server.ServiceRegistrationModule.bindings (ServiceRegistrationModule.scala: 29): привязка (класс com.lightbend.lagom.internal.server.ServiceRegistrationModule $ RegisterWith viavice)модули: com.google.inject.util.Modules $ OverrideModule -> играть.api.inject.guice.GuiceableModuleConversions $$ anon $ 1) при поиске com.lightbend.lagom.internal.server.ServiceRegistrationModule $ RegisterWithServiceRegistry
1 ошибка в com.google.inject.internal.Errors.throwfreceptionException.java: 470) на com.google.inject.internal.InternalInjectorCreator.injectDynamically (InternalInjectorCreator.java:184) на com.google.inject.internal.InternalInjectorCreator.build (InternalInjectorCreator.java:110) на com.google.inject.Guice.createInjector (Guice.java:99) на com.google.inject.Guice.createInjector (Guice.java:84) на play.api.inject.guice.GuiceBuilder.injector (GuiceInjectorBuilder.scala: 185) на play.api.inject.guice.GuiceApplicationBuilder.build (GuiceApplicationBuilder.scala: 137) в play.api.inject.guice.GuiceApplicationLoader.load (GuiceApplicationLoader.scala: 21) в play.core.server.LagomReloadableDevSononart $ $получить $ 5 (LagomReloadableDevServerStart.scala: 176) в play.utils.Threads $ .withContextClassLoader (Threads.scala: 21) в play.core.server.LagomReloadableDevServerStart $$ anon $ 1. $ anonfun $ get $ 3 (LagomReloadableDevServerStart.scala: 173) в scala.Option.map (Option.scala: 146) в play.core.server.LagomReloadableDevServerStart $$ anon $ 1. $ anonfun $ get $ 2 (LagomReloadableDevServerStart.scala: 149) в scala.util.Success.flatMap (Try.scala: 247) в play.core.server.LagomReloadableDevServerun $ $получить $ 1 (LagomReloadableDevServerStart.scala: 147) в scala.concurrent.Future $. $ anonfun $ apply $ 1 (Future.scala: 655) в scala.util.Success. $ anonfun $ map $ 1 (Try.scala: 251) в scala.util.Success.map (Try.scala: 209) в scala.concurrent.Future. $ anonfun $ map $ 1 (Future.scala: 289) в scala.concurrent.impl.Promise.liftedTree1 $ 1 (Promise.scala: 29)в scala.concurrent.impl.Promise. $ anonfun $ transform $ 1 (Promise.scala: 29) в scala.concurrent.impl.CallbackRunnable.run (Promise.scala: 60) в java.util.concurrent.ForkJoinTask $ RunnableExecuteAction.exe(ForkJoinTask.java:1402) в java.util.concurrent.ForkJoinTask.doExec (ForkJoinTask.java:289) в java.util.concurrent.ForkJoinPool $ WorkQueue.runTask (ForkJoinPool.java:1056) в java.util.concurrent.ForkJoinPool.runWorker (ForkJoinPool.javauro.javauru92).run (ForkJoinWorkerThread.java:157) Вызывается: scala.MatchError: Сообщение (класса sun.reflect.generics.reflectiveObjects.TypeVariableImpl) в com.lightbend.lagom.internal.javadsl.api.CallResfance для $ $.(ServiceCallResolver.scala: 46) в scala.Option.orElse (Option.scala: 289) в com.lightbend.lagom.internal.javadsl.api.CallResolver.registeredMessageSerializerFor (ServiceCallResolver.scala: 44) вcom.lightbend.lagom.internal.javadsl.api.CallResolver.messageSerializerFor (ServiceCallResolver.scala: 26) по адресу com.lightbend.lagom.internal.javadsl.api.CallResolver.resolveMessageSerializer (ServiceCallRlightSal. 17).lagom.internal.javadsl.api.ServiceReader $. $ anonfun $ resolServiceDescriptor $ 4 (ServiceReader.scala: 200) в scala.collection.TraversableLike. $ anonfun $ map $ 1 (TraversableLike.scala: 234) в scala.collection.Iterator.foreach(Iterator.scala: 929) в scala.collection.Iterator.foreach $ (Iterator.scala: 929) в scala.collection.AbstractIterator.foreach (Iterator.scala: 1417) в scala.collection.IterableLike.foreach (IterableLike.scala: 71) в scala.collection.IterableLike.foreach $ (IterableLike.scala: 70) в scala.collection.AbstractIterable.foreach (Iterable.scala: 54) в scala.collection.TraversableLike.map (TraversableLike.scala: 234) вscala.collection.TraversableLike.map $ (TraversableLike.scala: 227) в scala.collection.AbstractTraversable.map (Traversable.scala: 104) в com.lightbend.lagom.internal.javadsl.api.ServiceReader..internal.javadsl.server.JavadslServerBuilder. $ anonfun $ resolServices $ 1 (JavadslServerBuilder.scala: 56) на scala.collection.TraversableLike. $ anonfun $ map $ 1 (TraversableLike.scala: 234) в scala.foreableableableableable(ResizableArray.scala: 59) на scala.collection.mutable.ResizableArray.foreach $ (ResizableArray.scala: 52) на scala.collection.mutable.ArrayBuffer.foreach (ArrayBuffer.scala: 48) на scala.collection.TraversableLike.map.(TraversableLike.scala: 234) в scala.collection.TraversableLike.map $ (TraversableLike.scala: 227) в scala.collection.AbstractTraversable.map (Traversable.scala: 104) в com.lightbend.lagom.internal.javadsl.server.JavadslServerBuilder.resolveServices (JavadslServerBuilder.scala: 50) в com.lightbend.lagom.internal.javadsl.server.ResolvedServicesProvider.get $ lzycompute (JavadslServerBuilder.scala: 112) по адресу com.lightbend.lagom.internal.javadsl.server.ResolvedServicesProvider.get (JavadslServerBuilder.scala: 111) в com.lightl..ResolvedServicesProvider.get (JavadslServerBuilder.scala: 105) в com.google.inject.internal.ProviderInternalFactory.provision (ProviderInternalFactory.java:81) в com.google.inject.internal.InternalFactoryToInitializableAdapitFactory.ToInitializableAdapter.provision.com.google.inject.internal.ProviderInternalFactory.circularGet (ProviderInternalFactory.java:61) в com.google.inject.internal.InternalFactoryToInitializableAdapter.get (InternalFactoryToInitializableAdapter.java:45) в com.google.injectinternal (SingleParameterInjector.java:38) на com.google.inject.internal.SingleParameterInjector.getAll (SingleParameterInjector.java:62) на com.google.inject.internal.ConstructorInjector.provision (ConstructorInjec)tor.java:110) на com.google.inject.internal.ConstructorInjector.construct (ConstructorInjector.java:90) на com.google.inject.internal.ConstructorBindingImpl $ Factory.get (ConstructorBindingImpl.java:268) на com.google..inject.internal.java: 40) на com.google.inject.internal.SingletonScope $ 1.get (SingletonScope.java:194) на com.google.inject.internal.InternalFactoryToProviderAdapter.get (InternalFactoryToProviderAdapter.java:41) наcom.google.inject.internal.InternalInjectorCreator $ 1.call (InternalInjectorCreator.java:205) на com.google.inject.internal.InternalInjectorCreator $ 1.call (InternalInjectorCreator.java:199) на com.google.inject.internal.InjectorImpl.callInContext (InjectorImpl.java:1085) на com.google.inject.internal.InternalInjectorCreator.loadEagerSingletons (InternalInjectorCreator.java:199) на com.google.inject.internal.InternalInjectorCreator.injectDynamically (InternalInjectorCreator.java:180)подробнее
Stacktrace, вызванный имплементацией проекта пользователем (путь к файловой системе к проекту - / Users / kimgysen / Documents / project livefeed / lagom / api-v1 / user-impl).Подсказка: может быть, вы забыли включить класс модуля обслуживания через play.modules.enabled
?(проверьте в application.conf вашего проекта)
Мой application.conf определяет:
play.modules.enabled += UserModule
- application.conf хранится в папке user-impl / src / main /ресурсы
- UserModule хранится в папке user-impl / src / main / java
Я следовал доступным примерам для определения моего модуля:
public class UserModule extends AbstractModule implements ServiceGuiceSupport {
@Override
protected void configure() {
bindService(UserService.class, UserServiceImpl.class);
}
}
My sbtФайл .build также очень прост:
organization in ThisBuild := "be.zwoop"
scalaVersion in ThisBuild := "2.12.4"
lagomKafkaEnabled in ThisBuild := true
import scala.concurrent.duration._ // Mind that the import is needed.
lagomCassandraMaxBootWaitingTime in ThisBuild := 50000.seconds
lazy val userApi = project("user-api")
.settings(
version := "1.0-SNAPSHOT",
libraryDependencies ++= Seq(
lagomJavadslApi,
lombok
)
)
lazy val userImpl = project("user-impl")
.enablePlugins(LagomJava)
.settings(
version := "1.0-SNAPSHOT",
libraryDependencies ++= Seq(
lagomJavadslPersistenceCassandra
)
)
.dependsOn(userApi)
val lombok = "org.projectlombok" % "lombok" % "1.16.20"
def project(id: String) = Project(id, base = file(id))
У меня определен только 1 плагин:
addSbtPlugin("com.lightbend.lagom" % "lagom-sbt-plugin" % "1.4.4")
Спасибо за предложения.
Отредактируйте внешний вид моей службы:
public interface UserService extends Service {
String REGISTER_USER_TOPIC = "users";
ServiceCall<User, String> registerUser();
@Override
default Descriptor descriptor() {
return named("user").withCalls(
pathCall("/api/user", this::registerUser)
).withPathParamSerializer(
UUID.class, PathParamSerializers.required("UUID", UUID::fromString, UUID::toString)
).withTopics(
topic(REGISTER_USER_TOPIC, this::UserTopic)
).withAutoAcl(true);
}
Topic UserTopic();
}