【问题标题】:Running akka with runnable jar使用可运行的 jar 运行 akka
【发布时间】:2015-04-17 18:36:35
【问题描述】:

我正在尝试使用 NetBeans 在 java maven 项目中实现 akka。当我从 NetBeans 运行它时它运行良好,但是当我从 NetBeans 运行可运行 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
        }
    }
}
}

【问题讨论】:

    标签: java maven netbeans jar akka


    【解决方案1】:

    http://doc.akka.io/docs/akka/snapshot/general/configuration.html 有一条关于从“胖罐子”运行 Akka 的警告。问题是有多个reference.conf 配置文件,Maven 程序集或阴影插件的默认行为是用后面的实例覆盖配置文件的早期实例。

    要解决此问题,建议的方法是使用 Maven shade 插件生成可执行 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>
    

    【讨论】:

    • @Richard_Neish 感谢您的建议,但是当我使用 maven-assembly-plugin 时,reference.conf 也会在根目录中生成。我将我的 akka 配置保存在其他目录中,它不在 application.conf 中。当我使用 maven-shade-plugin 时,找不到 akka 配置:没有找到密钥 akka10300 的配置设置。
    • @Richard_Neish 你好,谢谢理查德先生。 akka 插件有效。我想我之前配置akka时犯了一些错误,但现在可以了。是的,谢谢。 :D
    猜你喜欢
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-15
    • 2013-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多