运行 带有可运行 jar 的 akka

Running akka with runnable jar

我正在尝试使用 NetBeans 在 java maven 项目中实现 akka。当我从 NetBeans 运行 它时,它 运行 没问题,但是当我从 NetBeans 运行 运行nable jar 时,它会产生错误。

Exception in thread "main" com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'akka.remote.log-received-messages'

当我在配置中添加 log-received-message 时,它​​要求另一个配置。这是我用来生成 jar 文件的插件。

<plugin>
        <artifactId>maven-assembly-plugin</artifactId>
</plugin>

我的依赖是

    <dependency>
        <groupId>com.typesafe.akka</groupId> 
        <artifactId>akka-actor_2.10</artifactId> 
        <version>2.3.7</version> 
    </dependency>
    <dependency>
        <groupId>com.typesafe.akka</groupId>
        <artifactId>akka-remote_2.10</artifactId>
        <version>2.3.7</version>
    </dependency>

akka 的配置是

akka10300{
akka{
    actor{provider = "akka.remote.RemoteActorRefProvider"}
    remote {
    enabled-transports = ["akka.remote.netty.tcp"]
        netty.tcp {
            hostname="127.0.0.1"
            port=10300
        }
    }
}
}

http://doc.akka.io/docs/akka/snapshot/general/configuration.html 的 "fat jar" 发出了关于 运行 Akka 的警告。问题是存在多个 reference.conf 配置文件,Maven 程序集或阴影插件的默认行为是用较晚的实例覆盖配置文件的较早实例。

要解决此问题,建议的方法是使用 Maven 阴影插件生成可执行 jar 并将其配置为将所有 resource.conf 文件附加到一个文件中而不是覆盖。建议的 Maven 阴影插件配置如下所示:

<plugin>
 <groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-shade-plugin</artifactId>
 <version>1.5</version>
 <executions>
  <execution>
   <phase>package</phase>
   <goals>
    <goal>shade</goal>
   </goals>
   <configuration>
    <shadedArtifactAttached>true</shadedArtifactAttached>
    <shadedClassifierName>allinone</shadedClassifierName>
    <artifactSet>
     <includes>
      <include>*:*</include>
     </includes>
    </artifactSet>
    <transformers>
      <transformer
       implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
       <resource>reference.conf</resource>
      </transformer>
      <transformer
       implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
       <manifestEntries>
        <Main-Class>akka.Main</Main-Class>
       </manifestEntries>
      </transformer>
    </transformers>
   </configuration>
  </execution>
 </executions>
</plugin>