我正在使用 apply plugin: 'com.bmuschko.tomcat'
进行 tomcat 部署,我们通常使用 maven 但这次我们改为 gradle,经过几次尝试使用 intellijidea 作为我的 IDE,我我无法运行 tomcatRun
任务,出现奇怪的错误提示。
Failed to instantiate SLF4J LoggerFactory
Reported exception:
java.lang.NoClassDefFoundError: org/slf4j/spi/LoggerFactoryBinder
at java.lang.ClassLoader.defineClass1(Native Method)
....
....
Caused by: java.lang.IllegalStateException: org.slf4j.LoggerFactory could not be successfully initialized.
at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:354)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:294)
我已经在 gradle.build 中有了这个配置
log4jVersion = '1.2.17'
slf4jVersion = '1.7.12'
compile "log4j:log4j:$log4jVersion"
compile "org.slf4j:slf4j-log4j12:$slf4jVersion"
我也只使用 gradle 并运行 gradle tomcatRun
并且发生了同样的情况,我尝试的 gradle 版本是 2.6 和 2.10,结果相同。
似乎 war 文件正在使用其上的库正确创建,但是使用插件和 gradle 会产生奇怪的组合,这里有什么亮点吗? 另外一个问题是其他地方是否有 gradle-tomcat 的另一个插件?
忘了补充,我用的是tomcatVersion = '6.0.44'
和java7
最佳答案
我遇到了同样的问题,并使用 gradle wrapper 和 gradle verison 2.3 解决了这个问题。见https://docs.gradle.org/current/userguide/gradle_wrapper.html
添加gradle包装器
gradle wrapper --gradle-version 2.3
然后用
运行tomcatgradlew tomcatRun
关于java - Gradle + Tomcat 插件 + slf4j,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35044419/