在我的 test.conf 文件中,我有以下配置
akka {
actor {
provider = "akka.cluster.ClusterActorRefProvider"
serializers {
java = "akka.serialization.JavaSerializer"
}
serialization-bindings {
"java.io.Serializable" = "kyro"
}
}
}
我试图将此配置放入 test.properties 文件中
akka.actor.provider=akka.cluster.ClusterActorRefProvider
akka.actor.serializers.java=akka.serialization.JavaSerializer
akka.actor.serialization-bindings."java.io.Serializable" = kryo
当我使用 test.conf 文件创建 AKKA ActorSystem 时,它工作正常,但是当我使用 test.propeties 文件创建 ActorSytem 时
System.setProperty("config.file", "test.properties");
Config config = ConfigFactory.load();
ActorSystem testactor = ActorSystem.create("testactor", config);
这里我得到了 java ClassNotFoundExcpetion : "java
我发现我在 test.properties 文件中放置 akka.actor.serialization-bindings."java.io.Serialized"的方式不正确。请建议将其放入 .properties 文件中的正确方法。
最佳答案
我知道您想要一个属性文件,但我认为您不能以这种方式声明 key ,并且还请记住您手中有一个强大的配置工具。
我建议将所有默认应用程序配置放入 reference.conf
中,并使用 application.conf
进行覆盖,因此您只需删除特定的应用程序即可。类路径上的conf
用于在test/resources
上进行测试。
这可能是您的java/resources/reference.conf
:
akka {
actor {
provider = "akka.cluster.ClusterActorRefProvider"
serializers {
java = "akka.serialization.JavaSerializer"
}
serialization-bindings {
"java.io.Serializable" = "kyro"
}
}
}
然后你将其放在 test/resources/application.conf
或任何你需要测试的地方:
akka {
serialization-bindings {
"java.io.Serializable" = "java"
}
}
当您调用ConfigFactory.load()
时,所有文件将合并到一个配置中。
我建议阅读有关如何配置和覆盖配置的更多信息:http://doc.akka.io/docs/akka/current/general/configuration.html#Configuring_multiple_ActorSystem
关于java - AKKA .conf 文件配置到 .properties 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43517113/