用可运行的jar运行akka(Running akka with runnable jar)

编程入门 行业动态 更新时间:2024-10-07 00:20:42
用可运行的jar运行akka(Running akka with runnable jar)

我试图在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'

当我在配置中添加日志接收消息时,它会要求另一个配置。 这是我用来生成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 } } } }

I'm trying to implement akka in java maven project with NetBeans. It runs fine when i run it from NetBeans but when I run the runnable jar from NetBeans, it generate error.

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

When I add log-received-message in the configuration, it ask for another configuration. This is the plugin that i used to generate the jar file.

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

And my dependency are

<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>

The configuration for akka is

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的“胖罐子”中运行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>

There is a warning about running Akka from a "fat jar" at http://doc.akka.io/docs/akka/snapshot/general/configuration.html. The issue is that there are multiple reference.conf configuration files, and the default behaviour of the Maven assembly or shade plugins is to overwrite earlier instances of the configuration file with later instances.

To fix this, the suggested approach is to use the Maven shade plugin to generate your executable jar and configure it to append all resource.conf files into a single file instead of overwriting. The suggested Maven shade plugin configuration looks like:

<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>

更多推荐

本文发布于:2023-07-04 09:20:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1022301.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:akka   jar   runnable   Running

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!