scala – 没有找到密钥“akka.version”的配置设置
我正在学习akka-remoting,这是我的项目的外观
项目结构看起来像 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 当我在命令行中运行我的项目时,我看到 $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> 我错过了什么? 解决方法
看起来你的问题是捆绑到一个jar-with-dependencies中,这导致了Akka的问题,如
documentation所述:
按照同一页面的建议,您可以使用maven-shade-plugin来合并所有参考配置:
参见:Akka: missing akka.version (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |