我使用的是Lagom 1.3.1 [SCALA]
我正在尝试使用pom.xml中的必要配置连接到外部Cassandra和kafka .
当我使用mvn lagom:runAll启动服务时,我收到以下错误
Downloading: http://.../.../com/lightbend/lagom/lagom-reloadable-server_2.11/1.3.1/lagom-reloadable-server_2.11-1.3.1.pom
Downloaded: http://.../.../com/lightbend/lagom/lagom-reloadable-server_2.11/1.3.1/lagom-reloadable-server_2.11-1.3.1.pom (6 KB at 52.8 KB/sec)
Downloading: http://.../.../com/lightbend/lagom/lagom-service-registration_2.11/1.3.1/lagom-service-registration_2.11-1.3.1.pom
Downloaded: http://.../.../com/lightbend/lagom/lagom-service-registration_2.11/1.3.1/lagom-service-registration_2.11-1.3.1.pom (6 KB at 48.1 KB/sec)
Downloading: http://.../.../com/lightbend/lagom/lagom-reloadable-server_2.11/1.3.1/lagom-reloadable-server_2.11-1.3.1.jar
Downloading: http://.../.../com/lightbend/lagom/lagom-service-registration_2.11/1.3.1/lagom-service-registration_2.11-1.3.1.jar
Downloaded: http://.../.../com/lightbend/lagom/lagom-reloadable-server_2.11/1.3.1/lagom-reloadable-server_2.11-1.3.1.jar (30 KB at 288.2 KB/sec)
Downloaded: http://.../.../com/lightbend/lagom/lagom-service-registration_2.11/1.3.1/lagom-service-registration_2.11-1.3.1.jar (21 KB at 171.7 KB/sec)
No play.logger.configurator found: logging must be configured entirely by the application.
com.google.inject.CreationException: Unable to create injector, see the following errors:
1) Could not find a suitable constructor in com.lightbend.lagom.internal.javadsl.server.ResolvedServices. Classes must have either one (and only one) constructor annotated with @Inject or a zero-argument constructor that is not private.
at com.lightbend.lagom.internal.javadsl.server.ResolvedServices.class(JavadslServerBuilder.scala:95)
while locating com.lightbend.lagom.internal.javadsl.server.ResolvedServices
for parameter 1 at com.lightbend.lagom.internal.server.ServiceRegistrationModule$RegisterWithServiceRegistry.(ServiceRegistrationModule.scala:54)
at com.lightbend.lagom.internal.server.ServiceRegistrationModule.bindings(ServiceRegistrationModule.scala:28):
Binding(class com.lightbend.lagom.internal.server.ServiceRegistrationModule$RegisterWithServiceRegistry to self eagerly) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1)
2) Could not find a suitable constructor in com.lightbend.lagom.javadsl.api.ServiceInfo. Classes must have either one (and only one) constructor annotated with @Inject or a zero-argument constructor that is not private.
at com.lightbend.lagom.javadsl.api.ServiceInfo.class(ServiceInfo.java:51)
while locating com.lightbend.lagom.javadsl.api.ServiceInfo
for field at com.lightbend.lagom.internal.javadsl.registry.ServiceRegistryClientProvider.serviceInfo(ServiceRegistryModule.scala:62)
at com.lightbend.lagom.internal.javadsl.registry.ServiceRegistryModule.configure(ServiceRegistryModule.scala:35) (via modules: com.google.inject.util.Modules$OverrideModule -> com.lightbend.lagom.internal.javadsl.registry.ServiceRegistryModule)
2 errors
at com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:466)
at com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:155)
at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:107)
我没有在我的代码中使用Guice模块,我正在利用scala用“macwire”连接依赖关系的方式 . 但是,lagom的“服务注册”模块依赖于使用guice进行布线的javadsl .
有关如何解决此问题的任何想法?
我的父pom中的Maven依赖:
<properties>
<scala.version>2.11.8</scala.version>
<scala.binary.version>2.11</scala.binary.version>
<lagom.version>1.3.1</lagom.version>
<macwire.version>2.2.5</macwire.version>
.....
</properties>
<dependencies>
<dependency>
<groupId>com.lightbend.lagom</groupId>
<artifactId>lagom-scaladsl-server_${scala.binary.version}</artifactId>
<version>${lagom.version}</version>
</dependency>
<dependency>
<groupId>com.typesafe.play</groupId>
<artifactId>play-netty-server_${scala.binary.version}</artifactId>
<version>${play.version}</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>${scala.version}</version>
</dependency>
<dependency>
<groupId>com.lightbend.lagom</groupId>
<artifactId>lagom-scaladsl-api_${scala.binary.version}</artifactId>
<version>${lagom.version}</version>
</dependency>
<dependency>
<groupId>com.lightbend.lagom</groupId>
<artifactId>lagom-scaladsl-persistence_${scala.binary.version}</artifactId>
<version>${lagom.version}</version>
</dependency>
<dependency>
<groupId>com.lightbend.lagom</groupId>
<artifactId>lagom-logback_${scala.binary.version}</artifactId>
<version>${lagom.version}</version>
</dependency>
<dependency>
<groupId>com.lightbend.lagom</groupId>
<artifactId>lagom-scaladsl-testkit_${scala.binary.version}</artifactId>
<version>${lagom.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.lightbend.lagom</groupId>
<artifactId>lagom-scaladsl-integration-client_${scala.binary.version}</artifactId>
<version>${lagom.version}</version>
</dependency>
<dependency>
<groupId>com.lightbend.lagom</groupId>
<artifactId>lagom-scaladsl-pubsub_${scala.binary.version}</artifactId>
<version>${lagom.version}</version>
</dependency>
<dependency>
<groupId>com.lightbend.lagom</groupId>
<artifactId>lagom-scaladsl-persistence-cassandra_${scala.binary.version}</artifactId>
<version>${lagom.version}</version>
</dependency>
<dependency>
<groupId>com.lightbend.lagom</groupId>
<artifactId>lagom-scaladsl-dev-mode_${scala.binary.version}</artifactId>
<version>${lagom.version}</version>
</dependency>
<dependency>
<groupId>com.softwaremill.macwire</groupId>
<artifactId>macros_${scala.binary.version}</artifactId>
<version>${macwire.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-scala_${scala.binary.version}</artifactId>
<version>2.8.7</version>
</dependency>
<!-- Test -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.scalatest</groupId>
<artifactId>scalatest_${scala.binary.version}</artifactId>
<version>3.0.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.holdenkarau</groupId>
<artifactId>spark-testing-base_2.10</artifactId>
<version>2.0.0_0.4.4</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
Maven Lagom插件配置:
<plugin>
<groupId>com.lightbend.lagom</groupId>
<artifactId>lagom-maven-plugin</artifactId>
<version>${lagom.version}</version>
<configuration>
<lagomService>true</lagomService>
<unmanagedServices>
<cas_native>http://ip-address:9042</cas_native>
</unmanagedServices>
<cassandraEnabled>false</cassandraEnabled>
<kafkaAddress>ip-address:9092</kafkaAddress>
<kafkaEnabled>false</kafkaEnabled>
</configuration>
</plugin>
1 回答
目前,Lagom不支持将Maven与Scala API一起使用,只支持sbt . 将Maven与Lagom一起使用需要使用Java API .