Gradle Tomcat プラグインの埋め込みコンテナー を使用してアプリを起動しようとすると、以下のスタック トレースが表示されます。
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 に何らかの形で関連する同様の問題を抱えているようです。私はSLF4Jのレガシーブリッジでそれを回避しようとしましたが、役に立ちませんでしたbuild.gradle
.
また、理論的には、JULI を無効にして、代わりに Tomcat を log4j にログ記録させることも可能であるように見えます。これにより、問題を解決できる可能性があるように見えますが、手順はすべて、 および の JAR を手動で置き換える必要が$CATALINA_HOME/bin
あり$CATALINA_HOME/lib
、私はしません。 Gradleコンテキストでそれを実現する方法を最初に考えています。
何か案は?