Playframework 只有在jar文件中才能找到自定义logback适配器类

Playframework 只有在jar文件中才能找到自定义logback适配器类,playframework,sbt,logback,Playframework,Sbt,Logback,我编写了自己的logback适配器类。当我直接用类路径中的相应类文件(在目录中)启动程序时,logback找不到它 ERROR in ch.qos.logback.core.joran.action.AppenderAction - Could not create an Appender of type [com....MyAppender]. ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiat

我编写了自己的logback适配器类。当我直接用类路径中的相应类文件(在目录中)启动程序时,logback找不到它

ERROR in ch.qos.logback.core.joran.action.AppenderAction - Could not create an Appender of type [com....MyAppender]. ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate type com....MyAppender
at ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate type com....MyAppender
at ch.qos.logback.core.util.OptionHelper.instantiateByClassNameAndParameter(OptionHelper.java:73)
at ch.qos.logback.core.util.OptionHelper.instantiateByClassName(OptionHelper.java:48)
如果我把它放在jar文件中,一切都很好

我看到logback正在使用它自己的类加载器,当我使用
sbt
play
启动应用程序时,问题就出现了。因此,问题可能就在这里

有没有办法解决这个问题

使用:

"com.typesafe.play" %% "play" % "2.3.9"
"ch.qos.logback" % "logback-core" % "1.1.3",
sbt launcher version 0.13.8
我看到了类似的问题,但仍然没有解决


建议的解决方案保持原样——它将在prod模式下工作,因为所有代码都将在jar文件中预编译。我希望您也在prod模式下尝试过

我相信安德烈提到的“问题”可能包含了这个难题的解决方案


当logback尝试配置其适配器时,游戏尚未启动。我怀疑Play的动态加载和重新编译机制也会修改类路径。这意味着logback启动时的类路径还不包括
target/scala-2.xx/classes
路径。这可能会在以后添加。

是的,每个人在产品模式下都可以正常工作。调试问题是一件痛苦的事情,因为在应用程序生命周期的很早阶段就调用了日志适配器,因此最终会遇到各种竞争条件。但是现在我不得不担心,当我的用户在开发过程中选择错误的日志配置文件时,他们不会被错误消息弄糊涂。