【问题标题】:Dropwizard: java.lang.IllegalStateException: Unable to acquire the logger contextDropwizard:java.lang.IllegalStateException:无法获取记录器上下文
【发布时间】:2016-08-19 18:02:48
【问题描述】:

我有一个项目,其中包含多个模块。其中一个模块,比如“main”,是我的服务类“MyService.class”。 Dropwizard 有一个 jar - dropwizard-core。我希望这个 jar 在多个模块中,所以我正在考虑将它的依赖关系保留在父 POM 中。通过这样做,在运行我的 dropwizard 服务文件时,我遇到了如下异常:

SLF4J: Class path contains multiple SLF4J bindings.<br>
SLF4J: Found binding in [jar:file:/home/username/.m2/repository/org/slf4j/slf4j-simple/1.7.12/slf4j-simple-1.7.12.jar!/org/slf4j/impl/StaticLoggerBinder.class]<br>
SLF4J: Found binding in [jar:file:/home/username/.m2/repository/ch/qos/logback/logback-classic/1.1.3/logback-classic-1.1.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]<br>
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.<br>
SLF4J: Actual binding is of type [org.slf4j.impl.SimpleLoggerFactory]<br><br>
Exception in thread "main" java.lang.IllegalStateException: Unable to acquire the logger context
                at io.dropwizard.logging.LoggingUtil.getLoggerContext(LoggingUtil.java:46)
                at io.dropwizard.logging.BootstrapLogging.bootstrap(BootstrapLogging.java:45)
                at io.dropwizard.logging.BootstrapLogging.bootstrap(BootstrapLogging.java:34)
                at io.dropwizard.Application.<init>(Application.java:24)
                at my.project.package.MyService.<init>(MyService.java:31)
                at my.project.package.MyService.main(MyService.java:38)

如果我将依赖项放在“主”模块的 POM 中,这个项目运行得非常好。

Dropwizard 绑定了错误的记录器,这就是此异常背后的原因。但是这种绑定发生在后台,我无法控制它。

我还共享这两种方案的依赖关系树。

案例 1:当 dropwizard-core 在子 POM(主模块)中时:

my.groupId.myProject:myProject-main:jar:1.0-SNAPSHOT<br>
[INFO] +- io.dropwizard:dropwizard-core:jar:0.9.2:compile<br>
[INFO] |  +- io.dropwizard:dropwizard-util:jar:0.9.2:compile<br>
[INFO] |  |  +- com.fasterxml.jackson.core:jackson-annotations:jar:2.6.0:compile<br>
[INFO] |  |  +- com.google.guava:guava:jar:18.0:compile<br>
[INFO] |  |  +- com.google.code.findbugs:jsr305:jar:3.0.1:compile<br>
[INFO] |  |  \- joda-time:joda-time:jar:2.9:compile<br>
[INFO] |  +- io.dropwizard:dropwizard-jackson:jar:0.9.2:compile<br>
[INFO] |  |  +- com.fasterxml.jackson.core:jackson-core:jar:2.6.3:compile<br>
[INFO] |  |  +- com.fasterxml.jackson.core:jackson-databind:jar:2.6.3:compile<br>
[INFO] |  |  +- com.fasterxml.jackson.datatype:jackson-datatype-jdk7:jar:2.6.3:compile<br>
[INFO] |  |  +- com.fasterxml.jackson.datatype:jackson-datatype-guava:jar:2.6.3:compile<br>
[INFO] |  |  +- com.fasterxml.jackson.module:jackson-module-afterburner:jar:2.6.3:compile<br>
[INFO] |  |  +- com.fasterxml.jackson.datatype:jackson-datatype-joda:jar:2.6.3:compile<br>
[INFO] |  |  +- org.slf4j:slf4j-api:jar:1.7.12:compile<br>
[INFO] |  |  \- ch.qos.logback:logback-classic:jar:1.1.3:compile<br>
[INFO] |  +- io.dropwizard:dropwizard-validation:jar:0.9.2:compile<br>
[INFO] |  |  +- org.hibernate:hibernate-validator:jar:5.2.2.Final:compile<br>
[INFO] |  |  |  +- javax.validation:validation-api:jar:1.1.0.Final:compile<br>
[INFO] |  |  |  +- org.jboss.logging:jboss-logging:jar:3.2.1.Final:compile<br>
[INFO] |  |  |  \- com.fasterxml:classmate:jar:1.1.0:compile<br>
[INFO] |  |  \- org.glassfish:javax.el:jar:3.0.0:compile<br>
[INFO] |  +- io.dropwizard:dropwizard-configuration:jar:0.9.2:compile<br>
[INFO] |  |  +- com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:jar:2.6.3:compile<br>
[INFO] |  |  |  \- org.yaml:snakeyaml:jar:1.15:compile<br>
[INFO] |  |  \- org.apache.commons:commons-lang3:jar:3.4:compile<br>
[INFO] |  +- io.dropwizard:dropwizard-logging:jar:0.9.2:compile<br>
[INFO] |  |  +- io.dropwizard.metrics:metrics-logback:jar:3.1.2:compile<br>
[INFO] |  |  +- org.slf4j:jul-to-slf4j:jar:1.7.12:compile<br><br>
[INFO] |  |  +- ch.qos.logback:logback-core:jar:1.1.3:compile<br>
[INFO] |  |  +- org.slf4j:log4j-over-slf4j:jar:1.7.12:compile<br>
[INFO] |  |  +- org.slf4j:jcl-over-slf4j:jar:1.7.12:compile<br>
[INFO] |  |  \- org.eclipse.jetty:jetty-util:jar:9.2.13.v20150730:compile<br>
[INFO] |  +- io.dropwizard:dropwizard-metrics:jar:0.9.2:compile<br>
[INFO] |  +- io.dropwizard:dropwizard-jersey:jar:0.9.2:compile<br>
[INFO] |  |  +- org.glassfish.jersey.core:jersey-server:jar:2.22.1:compile<br>
[INFO] |  |  |  +- org.glassfish.jersey.core:jersey-common:jar:2.22.1:compile<br>
[INFO] |  |  |  |  +- org.glassfish.jersey.bundles.repackaged:jersey-guava:jar:2.22.1:compile<br>
[INFO] |  |  |  |  \- org.glassfish.hk2:osgi-resource-locator:jar:1.0.1:compile<br>
[INFO] |  |  |  +- javax.ws.rs:javax.ws.rs-api:jar:2.0.1:compile<br>
[INFO] |  |  |  +- org.glassfish.jersey.media:jersey-media-jaxb:jar:2.22.1:compile<br>
[INFO] |  |  |  +- javax.annotation:javax.annotation-api:jar:1.2:compile<br>
[INFO] |  |  |  +- org.glassfish.hk2:hk2-api:jar:2.4.0-b31:compile<br>
[INFO] |  |  |  |  +- org.glassfish.hk2:hk2-utils:jar:2.4.0-b31:compile<br>
[INFO] |  |  |  |  \- org.glassfish.hk2.external:aopalliance-repackaged:jar:2.4.0-b31:compile<br>
[INFO] |  |  |  +- org.glassfish.hk2.external:javax.inject:jar:2.4.0-b31:compile<br>
[INFO] |  |  |  \- org.glassfish.hk2:hk2-locator:jar:2.4.0-b31:compile<br>
[INFO] |  |  |     \- org.javassist:javassist:jar:3.18.1-GA:compile<br>
[INFO] |  |  +- org.glassfish.jersey.ext:jersey-metainf-services:jar:2.22.1:compile<br>
[INFO] |  |  +- org.glassfish.jersey.ext:jersey-bean-validation:jar:2.22.1:compile<br>
[INFO] |  |  +- io.dropwizard.metrics:metrics-jersey2:jar:3.1.2:compile<br>
[INFO] |  |  +- com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:jar:2.6.3:compile<br>
[INFO] |  |  |  +- com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:jar:2.6.3:compile<br>
[INFO] |  |  |  \- com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.6.3:compile<br>
[INFO] |  |  +- org.glassfish.jersey.containers:jersey-container-servlet:jar:2.22.1:compile<br>
[INFO] |  |  |  \- org.glassfish.jersey.containers:jersey-container-servlet-core:jar:2.22.1:compile<br>
[INFO] |  |  +- org.eclipse.jetty:jetty-server:jar:9.2.13.v20150730:compile<br>
[INFO] |  |  |  +- javax.servlet:javax.servlet-api:jar:3.1.0:compile<br>
[INFO] |  |  |  \- org.eclipse.jetty:jetty-io:jar:9.2.13.v20150730:compile<br>
[INFO] |  |  +- org.eclipse.jetty:jetty-webapp:jar:9.2.13.v20150730:compile<br>
[INFO] |  |  |  \- org.eclipse.jetty:jetty-xml:jar:9.2.13.v20150730:compile<br>
[INFO] |  |  \- org.eclipse.jetty:jetty-continuation:jar:9.2.13.v20150730:compile<br>
[INFO] |  +- io.dropwizard:dropwizard-servlets:jar:0.9.2:compile<br>
[INFO] |  |  \- io.dropwizard.metrics:metrics-annotation:jar:3.1.2:compile<br>
[INFO] |  +- io.dropwizard:dropwizard-jetty:jar:0.9.2:compile<br>
[INFO] |  |  +- io.dropwizard.metrics:metrics-jetty9:jar:3.1.2:compile<br>
[INFO] |  |  +- org.eclipse.jetty:jetty-servlet:jar:9.2.13.v20150730:compile<br>
[INFO] |  |  |  \- org.eclipse.jetty:jetty-security:jar:9.2.13.v20150730:compile<br>
[INFO] |  |  +- org.eclipse.jetty:jetty-servlets:jar:9.2.13.v20150730:compile<br>
[INFO] |  |  \- org.eclipse.jetty:jetty-http:jar:9.2.13.v20150730:compile<br>
[INFO] |  +- io.dropwizard:dropwizard-lifecycle:jar:0.9.2:compile<br>
[INFO] |  +- io.dropwizard.metrics:metrics-core:jar:3.1.2:compile<br>
[INFO] |  +- io.dropwizard.metrics:metrics-jvm:jar:3.1.2:compile<br>
[INFO] |  +- io.dropwizard.metrics:metrics-servlets:jar:3.1.2:compile<br>
[INFO] |  |  \- io.dropwizard.metrics:metrics-json:jar:3.1.2:compile<br>
[INFO] |  +- io.dropwizard.metrics:metrics-healthchecks:jar:3.1.2:compile<br>
[INFO] |  +- net.sourceforge.argparse4j:argparse4j:jar:0.6.0:compile<br>
[INFO] |  \- org.eclipse.jetty.toolchain.setuid:jetty-setuid-java:jar:1.0.3:compile<br>
[INFO] +- de.thomaskrille:dropwizard-template-config:jar:1.1.0:compile<br>
[INFO] +- my.groupId.myProject:myProject-module1:jar:1.0-SNAPSHOT:compile<br>
[INFO] +- my.groupId.myProject:myProject-module2:jar:1.0-SNAPSHOT:compile<br>
[INFO] +- my.groupId.myProject:myProject-module3:jar:0.0.1-SNAPSHOT:compile<br>
[INFO] |  +- io.dropwizard:dropwizard-auth:jar:0.9.1:compile<br>
[INFO] |  \- io.dropwizard:dropwizard-client:jar:0.9.1:compile<br>
[INFO] |     +- org.glassfish.jersey.core:jersey-client:jar:2.22.1:compile<br>
[INFO] |     +- org.apache.httpcomponents:httpclient:jar:4.5.1:compile<br>
[INFO] |     |  +- org.apache.httpcomponents:httpcore:jar:4.4.3:compile<br>
[INFO] |     |  \- commons-codec:commons-codec:jar:1.9:compile<br>
[INFO] |     +- io.dropwizard.metrics:metrics-httpclient:jar:3.1.2:compile<br>
[INFO] |     \- org.glassfish.jersey.connectors:jersey-apache-connector:jar:2.22.1:compile<br>
[INFO] +- junit:junit:jar:4.12:test<br>
[INFO] |  \- org.hamcrest:hamcrest-core:jar:1.3:test<br>
[INFO] +- org.hamcrest:hamcrest-library:jar:1.3:test<br>
[INFO] \- org.mockito:mockito-core:jar:1.10.19:test<br>
[INFO]    \- org.objenesis:objenesis:jar:2.1:test<br>

**Case 2 : When dropwizard-core is in parent POM :**

 my.groupId.myProject:myProject-main:jar:jar:1.0-SNAPSHOT<br>
[INFO] +- de.thomaskrille:dropwizard-template-config:jar:1.1.0:compile<br>
[INFO] +- my.groupId.myProject:myProject-module1:jar:1.0-SNAPSHOT:compile<br>
[INFO] +- my.groupId.myProject:myProject-module2:jar:1.0-SNAPSHOT:compile<br>
[INFO] +- my.groupId.myProject:myProject-common:jar:0.0.1-SNAPSHOT:compile<br>
[INFO] |  +- io.dropwizard:dropwizard-auth:jar:0.9.1:compile<br>
[INFO] |  \- io.dropwizard:dropwizard-client:jar:0.9.1:compile<br>
[INFO] |     +- org.glassfish.jersey.core:jersey-client:jar:2.22.1:compile<br>
[INFO] |     |  +- javax.ws.rs:javax.ws.rs-api:jar:2.0.1:compile<br>
[INFO] |     |  +- org.glassfish.jersey.core:jersey-common:jar:2.22.1:compile<br>
[INFO] |     |  |  +- org.glassfish.jersey.bundles.repackaged:jersey-guava:jar:2.22.1:compile<br>
[INFO] |     |  |  \- org.glassfish.hk2:osgi-resource-locator:jar:1.0.1:compile<br>
[INFO] |     |  +- org.glassfish.hk2:hk2-api:jar:2.4.0-b31:compile<br>
[INFO] |     |  |  +- org.glassfish.hk2:hk2-utils:jar:2.4.0-b31:compile<br>
[INFO] |     |  |  \- org.glassfish.hk2.external:aopalliance-repackaged:jar:2.4.0-b31:compile<br>
[INFO] |     |  +- org.glassfish.hk2.external:javax.inject:jar:2.4.0-b31:compile<br>
[INFO] |     |  \- org.glassfish.hk2:hk2-locator:jar:2.4.0-b31:compile<br>
[INFO] |     |     \- org.javassist:javassist:jar:3.18.1-GA:compile<br>
[INFO] |     +- org.apache.httpcomponents:httpclient:jar:4.5.1:compile<br>
[INFO] |     |  +- org.apache.httpcomponents:httpcore:jar:4.4.3:compile<br>
[INFO] |     |  \- commons-codec:commons-codec:jar:1.9:compile<br>
[INFO] |     +- io.dropwizard.metrics:metrics-httpclient:jar:3.1.2:compile<br>
[INFO] |     \- org.glassfish.jersey.connectors:jersey-apache-connector:jar:2.22.1:compile<br>
[INFO] +- io.dropwizard:dropwizard-core:jar:0.9.2:compile<br>
[INFO] |  +- io.dropwizard:dropwizard-util:jar:0.9.2:compile<br>
[INFO] |  |  +- com.fasterxml.jackson.core:jackson-annotations:jar:2.6.0:compile<br>
[INFO] |  |  +- com.google.guava:guava:jar:18.0:compile<br>
[INFO] |  |  +- com.google.code.findbugs:jsr305:jar:3.0.1:compile<br>
[INFO] |  |  \- joda-time:joda-time:jar:2.9:compile<br>
[INFO] |  +- io.dropwizard:dropwizard-jackson:jar:0.9.2:compile<br>
[INFO] |  |  +- com.fasterxml.jackson.core:jackson-core:jar:2.6.3:compile<br>
[INFO] |  |  +- com.fasterxml.jackson.core:jackson-databind:jar:2.6.3:compile<br>
[INFO] |  |  +- com.fasterxml.jackson.datatype:jackson-datatype-jdk7:jar:2.6.3:compile<br>
[INFO] |  |  +- com.fasterxml.jackson.datatype:jackson-datatype-guava:jar:2.6.3:compile<br>
[INFO] |  |  +- com.fasterxml.jackson.module:jackson-module-afterburner:jar:2.6.3:compile<br>
[INFO] |  |  +- com.fasterxml.jackson.datatype:jackson-datatype-joda:jar:2.6.3:compile<br>
[INFO] |  |  +- org.slf4j:slf4j-api:jar:1.7.12:compile<br>
[INFO] |  |  \- ch.qos.logback:logback-classic:jar:1.1.3:compile<br>
[INFO] |  +- io.dropwizard:dropwizard-validation:jar:0.9.2:compile<br>
[INFO] |  |  +- org.hibernate:hibernate-validator:jar:5.2.2.Final:compile<br>
[INFO] |  |  |  +- javax.validation:validation-api:jar:1.1.0.Final:compile<br>
[INFO] |  |  |  +- org.jboss.logging:jboss-logging:jar:3.2.1.Final:compile<br>
[INFO] |  |  |  \- com.fasterxml:classmate:jar:1.1.0:compile<br>
[INFO] |  |  \- org.glassfish:javax.el:jar:3.0.0:compile<br>
[INFO] |  +- io.dropwizard:dropwizard-configuration:jar:0.9.2:compile<br>
[INFO] |  |  +- com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:jar:2.6.3:compile<br>
[INFO] |  |  |  \- org.yaml:snakeyaml:jar:1.15:compile<br>
[INFO] |  |  \- org.apache.commons:commons-lang3:jar:3.4:compile<br>
[INFO] |  +- io.dropwizard:dropwizard-logging:jar:0.9.2:compile<br>
[INFO] |  |  +- io.dropwizard.metrics:metrics-logback:jar:3.1.2:compile<br>
[INFO] |  |  +- org.slf4j:jul-to-slf4j:jar:1.7.12:compile<br>
[INFO] |  |  +- ch.qos.logback:logback-core:jar:1.1.3:compile<br>
[INFO] |  |  +- org.slf4j:log4j-over-slf4j:jar:1.7.12:compile<br>
[INFO] |  |  +- org.slf4j:jcl-over-slf4j:jar:1.7.12:compile<br>
[INFO] |  |  \- org.eclipse.jetty:jetty-util:jar:9.2.13.v20150730:compile<br>
[INFO] |  +- io.dropwizard:dropwizard-metrics:jar:0.9.2:compile<br>
[INFO] |  +- io.dropwizard:dropwizard-jersey:jar:0.9.2:compile<br>
[INFO] |  |  +- org.glassfish.jersey.core:jersey-server:jar:2.22.1:compile<br>
[INFO] |  |  |  +- org.glassfish.jersey.media:jersey-media-jaxb:jar:2.22.1:compile<br>
[INFO] |  |  |  \- javax.annotation:javax.annotation-api:jar:1.2:compile<br>
[INFO] |  |  +- org.glassfish.jersey.ext:jersey-metainf-services:jar:2.22.1:compile<br>
[INFO] |  |  +- org.glassfish.jersey.ext:jersey-bean-validation:jar:2.22.1:compile<br>
[INFO] |  |  +- io.dropwizard.metrics:metrics-jersey2:jar:3.1.2:compile<br>
[INFO] |  |  +- com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:jar:2.6.3:compile<br>
[INFO] |  |  |  +- com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:jar:2.6.3:compile<br>
[INFO] |  |  |  \- com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.6.3:compile<br>
[INFO] |  |  +- org.glassfish.jersey.containers:jersey-container-servlet:jar:2.22.1:compile<br>
[INFO] |  |  |  \- org.glassfish.jersey.containers:jersey-container-servlet-core:jar:2.22.1:compile<br>
[INFO] |  |  +- org.eclipse.jetty:jetty-server:jar:9.2.13.v20150730:compile<br>
[INFO] |  |  |  +- javax.servlet:javax.servlet-api:jar:3.1.0:compile<br>
[INFO] |  |  |  \- org.eclipse.jetty:jetty-io:jar:9.2.13.v20150730:compile<br>
[INFO] |  |  +- org.eclipse.jetty:jetty-webapp:jar:9.2.13.v20150730:compile<br>
[INFO] |  |  |  \- org.eclipse.jetty:jetty-xml:jar:9.2.13.v20150730:compile<br>
[INFO] |  |  \- org.eclipse.jetty:jetty-continuation:jar:9.2.13.v20150730:compile<br>
[INFO] |  +- io.dropwizard:dropwizard-servlets:jar:0.9.2:compile<br>
[INFO] |  |  \- io.dropwizard.metrics:metrics-annotation:jar:3.1.2:compile<br>
[INFO] |  +- io.dropwizard:dropwizard-jetty:jar:0.9.2:compile<br>
[INFO] |  |  +- io.dropwizard.metrics:metrics-jetty9:jar:3.1.2:compile<br>
[INFO] |  |  +- org.eclipse.jetty:jetty-servlet:jar:9.2.13.v20150730:compile<br>
[INFO] |  |  |  \- org.eclipse.jetty:jetty-security:jar:9.2.13.v20150730:compile<br>
[INFO] |  |  +- org.eclipse.jetty:jetty-servlets:jar:9.2.13.v20150730:compile<br>
[INFO] |  |  \- org.eclipse.jetty:jetty-http:jar:9.2.13.v20150730:compile<br>
[INFO] |  +- io.dropwizard:dropwizard-lifecycle:jar:0.9.2:compile<br>
[INFO] |  +- io.dropwizard.metrics:metrics-core:jar:3.1.2:compile<br>
[INFO] |  +- io.dropwizard.metrics:metrics-jvm:jar:3.1.2:compile<br>
[INFO] |  +- io.dropwizard.metrics:metrics-servlets:jar:3.1.2:compile<br>
[INFO] |  |  \- io.dropwizard.metrics:metrics-json:jar:3.1.2:compile<br>
[INFO] |  +- io.dropwizard.metrics:metrics-healthchecks:jar:3.1.2:compile<br>
[INFO] |  +- net.sourceforge.argparse4j:argparse4j:jar:0.6.0:compile<br>
[INFO] |  \- org.eclipse.jetty.toolchain.setuid:jetty-setuid-java:jar:1.0.3:compile<br>
[INFO] +- junit:junit:jar:4.12:test<br>
[INFO] |  \- org.hamcrest:hamcrest-core:jar:1.3:test<br>
[INFO] +- org.hamcrest:hamcrest-library:jar:1.3:test<br>
[INFO] \- org.mockito:mockito-core:jar:1.10.19:test<br>
[INFO]    \- org.objenesis:objenesis:jar:2.1:test<br>

如果有人能想出一个可能的推理,那将是非常有帮助的。

谢谢。

【问题讨论】:

  • 你能解决这个问题吗?我面临着类似的异常
  • 我也是,但 OP 已经有一年左右没有登录了。我必须提供赏金吗?
  • 看看有没有帮助? stackoverflow.com/questions/49782932/…
  • 是在使用 Java 9 模块之类的东西吗?因为如果它是典型的 maven/java,那么设置依赖项的位置不应该有任何影响:一切都在同一个类路径中......或者你是否使用某种特殊的方式来构建类路径?我认为整个 pom 会很有帮助

标签: java maven logging slf4j dropwizard


【解决方案1】:

您的问题是您的类路径中有两个不同的 slf4j 实现(也称为绑定),而这不应该是这种情况。

发生这种情况时,slf4j 将使用第一个(按出现在类路径中的顺序)。然后 dropwizard LoggingUtil 尝试检索实际的 ILoggerFactory 但希望它是 logback 的 LoggerContext 的一个实例。

在您的情况下,它是 SimpleLoggerFactory 的一个实例,因为当您在父 POM 中声明对 dropwizard-core 的依赖项时,slf4j-simple 首先出现在类路径中:确实,logback-classic 依赖项是由 @ 带来的987654329@.

解决方法很简单:必须去掉对slf4j-simple的依赖。

这在slf4j manual的开头有解释。

【讨论】:

    【解决方案2】:

    通过在我的 build.gradle 中添加以下内容来全局排除 jar slf4j-log4j12 后,问题已解决

    configurations.all {
        exclude group:"org.slf4j", module: "slf4j-log4j12"
    }
    

    【讨论】:

      【解决方案3】:

      有时您不能排除库,因为它已被其他库使用。所以,你需要有两个实现。我遇到了这样的问题,所以我在我的配置模型中扩展了 io.dropwizard.Configuration 模型我覆盖了方法

      @Override
      public synchronized LoggingFactory getLoggingFactory() {
          return new ExternalLoggingFactory();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-05
        • 1970-01-01
        • 1970-01-01
        • 2015-01-18
        相关资源
        最近更新 更多