scala maven akka typesafe-stack typesafe-config

scala - No se ha encontrado ninguna configuración para la clave ''akka.version''



maven typesafe-stack (4)

Estoy aprendiendo akka-remoting y así es como se ve mi proyecto

La estructura del proyecto se ve como

project/pom.xml project/mymodule/pom.xml project/mymodule/src/main/resources/application.conf project/mymodule/src/main/scala/com.harit.akkaio.remote.RemoteApp.scala project/mymodule/src/main/scala/com.harit.akkaio.remote.ProcessingActor.scala

Cuando ejecuto mi proyecto en command-line , veo

$ java -jar akkaio-remote/target/akka-remote-jar-with-dependencies.jar com.harit.akkaio.remote.RemoteApp Hello:com.harit.akkaio.remote.RemoteApp Exception in thread "main" com.typesafe.config.ConfigException$Missing: No configuration setting found for key ''akka.version'' at com.typesafe.config.impl.SimpleConfig.findKey(SimpleConfig.java:124) at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:145) at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:151) at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:159) at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:164) at com.typesafe.config.impl.SimpleConfig.getString(SimpleConfig.java:206) at akka.actor.ActorSystem$Settings.<init>(ActorSystem.scala:169) at akka.actor.ActorSystemImpl.<init>(ActorSystem.scala:505) at akka.actor.ActorSystem$.apply(ActorSystem.scala:142) at akka.actor.ActorSystem$.apply(ActorSystem.scala:119) at com.harit.akkaio.remote.RemoteApp$.startProcessingActorSystem(RemoteApp.scala:16) at com.harit.akkaio.remote.RemoteApp$.main(RemoteApp.scala:12) at com.harit.akkaio.remote.RemoteApp.main(RemoteApp.scala)

RemoteApp.scala

package com.harit.akkaio.remote import akka.actor.{ActorRef, ActorSystem, Props} import com.typesafe.config.ConfigFactory import scala.concurrent.duration._ object RemoteApp { def main(args: Array[String]): Unit = { println("Hello:" + args.head) startProcessingActorSystem() } def startProcessingActorSystem() = { val system = ActorSystem("ProcessingSystem", ConfigFactory.load()) println("ProcessingActorSystem Started") } }

ProcessingActor.scala

package com.harit.akkaio.remote import akka.actor.{Actor, ActorLogging} case object Process case object Crash class ProcessingActor extends Actor with ActorLogging { def receive = { case Process => log.info("processing big things") case Crash => log.info("crashing the system") context.stop(self) } }

application.conf

akka { remote.netty.tcp.port = 2552 }

mymodule.pom.xml

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>akkaio</artifactId> <groupId>com.harit</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>akkaio-remote</artifactId> <properties> <akka-remote_2.11.version>2.3.11</akka-remote_2.11.version> </properties> <dependencies> <dependency> <groupId>com.typesafe.akka</groupId> <artifactId>akka-remote_2.11</artifactId> <version>${akka-remote_2.11.version}</version> </dependency> </dependencies> <build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <finalName>akka-remote</finalName> <archive> <manifest> <mainClass>com.harit.akkaio.remote.RemoteApp</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> <executions> <execution> <id>make-assembly</id> <!-- this is used for inheritance merges --> <phase>package</phase> <!-- bind to the packaging phase --> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>

pom.xml

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.harit</groupId> <artifactId>akkaio</artifactId> <version>1.0-SNAPSHOT</version> <modules> <module>akkaio-remote</module> </modules> <packaging>pom</packaging> <inceptionYear>2015</inceptionYear> <properties> <scala.version>2.11.6</scala.version> <junit.version>4.12</junit.version> <scalatest_2.11.version>2.2.5</scalatest_2.11.version> <akka-actor_2.11.version>2.3.11</akka-actor_2.11.version> <akka-slf4j_2.11.version>2.3.11</akka-slf4j_2.11.version> <akka-testkit_2.11.version>2.3.11</akka-testkit_2.11.version> <mockito-all.version>1.10.19</mockito-all.version> <maven-scala-plugin.scalaCompatVersion>2.11.6</maven-scala-plugin.scalaCompatVersion> <scalatest-maven-plugin.version>1.0</scalatest-maven-plugin.version> </properties> <repositories> <repository> <id>scala-tools.org</id> <name>Scala-Tools Maven2 Repository</name> <url>http://scala-tools.org/repo-releases</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>scala-tools.org</id> <name>Scala-Tools Maven2 Repository</name> <url>http://scala-tools.org/repo-releases</url> </pluginRepository> </pluginRepositories> <dependencies> <dependency> <groupId>org.scala-lang</groupId> <artifactId>scala-library</artifactId> <version>${scala.version}</version> </dependency> <dependency> <groupId>com.typesafe.akka</groupId> <artifactId>akka-actor_2.11</artifactId> <version>${akka-actor_2.11.version}</version> </dependency> <dependency> <groupId>com.typesafe.akka</groupId> <artifactId>akka-slf4j_2.11</artifactId> <version>${akka-slf4j_2.11.version}</version> </dependency> <dependency> <groupId>org.scalatest</groupId> <artifactId>scalatest-maven-plugin</artifactId> <version>${scalatest-maven-plugin.version}</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.typesafe.akka</groupId> <artifactId>akka-testkit_2.11</artifactId> <version>${akka-testkit_2.11.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.scalatest</groupId> <artifactId>scalatest_2.11</artifactId> <version>${scalatest_2.11.version}</version> <scope>test</scope> </dependency> </dependencies> <build> <defaultGoal>clean install</defaultGoal> <plugins> <plugin> <groupId>org.scala-tools</groupId> <artifactId>maven-scala-plugin</artifactId> <executions> <execution> <goals> <goal>compile</goal> <goal>testCompile</goal> </goals> </execution> </executions> <configuration> <scalaCompatVersion>${maven-scala-plugin.scalaCompatVersion}</scalaCompatVersion> <scalaVersion>${scala.version}</scalaVersion> <scalaVersion>${scala.version}</scalaVersion> <args> <arg>-target:jvm-1.8</arg> </args> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.7</version> <configuration> <skipTests>true</skipTests> </configuration> </plugin> <plugin> <groupId>org.scalatest</groupId> <artifactId>scalatest-maven-plugin</artifactId> <version>1.0</version> <configuration> <reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory> <junitxml>.</junitxml> <filereports>WDF TestSuite.txt</filereports> </configuration> <executions> <execution> <id>test</id> <goals> <goal>test</goal> </goals> </execution> </executions> </plugin> </plugins> </build> <reporting> <plugins> <plugin> <groupId>org.scala-tools</groupId> <artifactId>maven-scala-plugin</artifactId> <configuration> <scalaVersion>${scala.version}</scalaVersion> </configuration> </plugin> </plugins> </reporting> </project>

¿Qué me estoy perdiendo? Gracias


Agregar solo AnexarTransformer no resolvió el problema por mí. Si está tratando de implementar su aplicación de chispa en EMR y todavía se enfrentan a este problema, por favor, eche un vistazo a mi solución here . ¡Espero eso ayude!


Intenté este complemento, es genial pero me lleva a otro error debido a algunos archivos jar firmados. Aquí está el error:

Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for Manifest main attributes

Lo que te sugiero que uses es el plugin maven de Spring Spring. Solo agrégalo a tu construcción y disfruta de jarras ejecutables sin interrupciones. Esta es una buena razón por la que amo el marco Spring.

<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> <configuration> <classifier>final</classifier> <mainClass> com.main.PopularHashTags </mainClass> </configuration> </execution> </executions> </plugin>

Nota: No necesita tener una aplicación Spring Boot para usar este complemento. Solo úsalo en cualquier aplicación y funciona como un encanto.


Parece que su problema se está agrupando en un jar-with-dependencies , lo que causa problemas con Akka, como se describe en la documentation :

Advertencia

El enfoque de configuración de Akka depende en gran medida de la noción de que cada módulo / jar tenga su propio archivo reference.conf, todos estos serán descubiertos por la configuración y cargados. Desafortunadamente, esto también significa que si coloca / fusiona varios archivos jar en el mismo contenedor, también debe fusionar todos los archivos reference.confs. De lo contrario, todos los valores predeterminados se perderán y Akka no funcionará.

Como se sugiere en la misma página, puede usar maven-shade-plugin para fusionar todas las configuraciones de referencia:

Si está utilizando Maven para empaquetar su aplicación, también puede utilizar el soporte del Apache Maven Shade Plugin para Resource Transformers para fusionar todos los reference.confs en el classpath de compilación en uno.

Ver también: Akka: missing akka.version


Tenía un problema similar:

com.typesafe.config.ConfigException$Missing: No configuration setting found for key ''akka.persistence.journal-plugin-fallback''

Lo resolvió agregando un transformador adicional:

<plugin> <artifactId>maven-shade-plugin</artifactId> <version>2.4.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>reference.conf</resource> </transformer> </transformers> </configuration> </execution> </executions> </plugin>