1

我正在使用 Lagom 1.3.1 [SCALA]

我正在尝试使用 pom.xml 中的必要配置连接到外部 Cassandra 和 kafka。

当我使用 mvn lagom:runAll 启动服务时,出现以下错误

下载:http://.../.../com/lightbend/lagom/lagom-reloadable-server_2.11/1.3.1/lagom-reloadable-server_2.11-1.3.1.pom
下载:http://.../.../com/lightbend/lagom/lagom-reloadable-server_2.11/1.3.1/lagom-reloadable-server_2.11-1.3.1.pom(6 KB,52.8 KB/秒)
下载:http://.../.../com/lightbend/lagom/lagom-service-registration_2.11/1.3.1/lagom-service-registration_2.11-1.3.1.pom
下载:http://.../.../com/lightbend/lagom/lagom-service-registration_2.11/1.3.1/lagom-service-registration_2.11-1.3.1.pom(6 KB,48.1 KB/秒)
下载:http://.../.../com/lightbend/lagom/lagom-reloadable-server_2.11/1.3.1/lagom-reloadable-server_2.11-1.3.1.jar
下载:http://.../.../com/lightbend/lagom/lagom-service-registration_2.11/1.3.1/lagom-service-registration_2.11-1.3.1.jar
下载: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/秒)
下载: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/秒)
未找到 play.logger.configurator:日志记录必须完全由应用程序配置。
com.google.inject.CreationException: 无法创建注入器,看到如下错误:

1) 在 com.lightbend.lagom.internal.javadsl.server.ResolvedServices 中找不到合适的构造函数。类必须有一个(并且只有一个)用@Inject 注释的构造函数或一个非私有的零参数构造函数。
  在 com.lightbend.lagom.internal.javadsl.server.ResolvedServices.class(JavadslServerBuilder.scala:95)
  同时定位 com.lightbend.lagom.internal.javadsl.server.ResolvedServices
    对于 com.lightbend.lagom.internal.server.ServiceRegistrationModule$RegisterWithServiceRegistry.(ServiceRegistrationModule.scala:54) 的参数 1
  在 com.lightbend.lagom.internal.server.ServiceRegistrationModule.bindings(ServiceRegistrationModule.scala:28):
绑定(类 com.lightbend.lagom.internal.server.ServiceRegistrationModule$RegisterWithServiceRegistry 急切地自我)(通过模块:com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1 )

2) 在 com.lightbend.lagom.javadsl.api.ServiceInfo 中找不到合适的构造函数。类必须有一个(并且只有一个)用@Inject 注释的构造函数或一个非私有的零参数构造函数。
  在 com.lightbend.lagom.javadsl.api.ServiceInfo.class(ServiceInfo.java:51)
  同时定位 com.lightbend.lagom.javadsl.api.ServiceInfo
    对于 com.lightbend.lagom.internal.javadsl.registry.ServiceRegistryClientProvider.serviceInfo(ServiceRegistryModule.scala:62) 的字段
  在 com.lightbend.lagom.internal.javadsl.registry.ServiceRegistryModule.configure(ServiceRegistryModule.scala:35) (通过模块:com.google.inject.util.Modules$OverrideModule -> com.lightbend.lagom.internal.javadsl。 registry.ServiceRegistryModule)

2 个错误
        在 com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:466)
        在 com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:155)
        在 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>
4

1 回答 1

0

目前,Lagom 不支持将 Maven 与 Scala API 一起使用,仅支持 sbt。将 Maven 与 Lagom 一起使用需要使用 Java API。

于 2018-07-28T01:11:56.370 回答