Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ClassCircularyError:java/util/logging/LogRecord运行带有JavaMelody和Tomcat插件的GradleWebApp_Tomcat_Gradle_Slf4j_Tomcat Juli - Fatal编程技术网

ClassCircularyError:java/util/logging/LogRecord运行带有JavaMelody和Tomcat插件的GradleWebApp

ClassCircularyError:java/util/logging/LogRecord运行带有JavaMelody和Tomcat插件的GradleWebApp,tomcat,gradle,slf4j,tomcat-juli,Tomcat,Gradle,Slf4j,Tomcat Juli,当我尝试使用的嵌入式容器启动我的应用程序时,我得到了下面的堆栈跟踪 org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':tomcatRun'. at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69) ... Ca

当我尝试使用的嵌入式容器启动我的应用程序时,我得到了下面的堆栈跟踪

org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':tomcatRun'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
...
Caused by: java.lang.ClassCircularityError: java/util/logging/LogRecord
    at net.bull.javamelody.LoggingHandler.publish(LoggingHandler.java:109)
    at org.apache.juli.logging.DirectJDKLog.log(DirectJDKLog.java:183)
    at org.apache.juli.logging.DirectJDKLog.debug(DirectJDKLog.java:106)
    at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:369)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)
    at org.apache.catalina.startup.Tomcat.start(Tomcat.java:341)
    at org.apache.catalina.startup.Tomcat$start.call(Unknown Source)
    at org.gradle.api.plugins.tomcat.embedded.BaseTomcatServerImpl.start(BaseTomcatServerImpl.groovy:37)
...
当我使用外部Tomcat时,它不会发生,所以我希望它与Gradle的类路径和Gradle的内置依赖项有关(我甚至不知道如何找出它们是什么)。我已经翻了一番,人们似乎在某种程度上与SLF4J和/或Logback有关,我的项目都没有使用它们。我曾尝试使用解决方案,但没有效果——可能是因为我在
build.gradle
中声明了它们,现在已经太迟了(gradle本身已经拉入/配置了SLF4J)

从理论上看,禁用JULI并将Tomcat日志改为log4j也是可能的,这似乎有可能解决问题,但所有这些都与手动更换
$CATALINA_HOME/bin
$CATALINA_HOME/lib
中的jar有关,我不知道如何在Gradle环境下实现这一点


有什么想法吗?

最简单的解决办法是阻止Tomcat使用
java.util.logging
,让它改用Log4J

在我的
build.gradle
中:

tomcat“org.apache.tomcat.embed:tomcat-embed-logging-log4j:${tomcatVersion}”
//tomcat“org.apache.tomcat.embed:tomcat嵌入日志juli:${tomcatVersion}”
我知道这样做不鼓励“谢谢”评论,但在这种情况下,我必须破例-谢谢!;-)