java - Gradle + Tomcat 插件 + slf4j

标签 java tomcat gradle

我正在使用 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

然后用

运行tomcat
gradlew tomcatRun

关于java - Gradle + Tomcat 插件 + slf4j,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35044419/

相关文章:

java - 全局设置类路径环境变量值

java - Java JNA:应用程序完成后JRE崩溃

tomcat - SEVERE : Exception springSecurityFilterChain. .. ClassCastException ... 无法转换 DelegatingFilterProxy

java - jsf 和 eclipse 设置。资源管理器中的库与 tomcat 中的库不同。怎么会?

java - Maven 或 Gradle 构建类型/变体

java - Jpa 存储库 findBy 方法签名具有多个 or 运算符?

java - Hibernate Spatial 创建几何对象

grails - Gradle-仅在生产时从依赖项中排除jar

java - 在 Tomcat 上 curl 部署版本化 war

java - Bintray gradle 插件不上传 Artifact