由于种种原因,项目的结构被调整成了ant+maven共同管控的样子(真的好挫)
于是,一个最基本的问题来了,之前写的UT没法跑了。
首先爆出来的是slf4j的问题:
SLF4J: See http://www.slf4j.org/codes.html#version_mismatch for further details.
Exception in thread "main" java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V
at org.apache.commons.logging.impl.SLF4JLocationAwareLog.info(SLF4JLocationAwareLog.java:159)
at org.springframework.context.support.AbstractApplicationContext.prepareRefresh(AbstractApplicationContext.java:456)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:394)
at org.springframework.context.support.FileSystemXmlApplicationContext.<init>(FileSystemXmlApplicationContext.java:140)
at org.springframework.context.support.FileSystemXmlApplicationContext.<init>(FileSystemXmlApplicationContext.java:94)
at main.Run.main(Run.java:33)
到依赖的classpath里面一find,发现下面至少有1.4.3、1.5.10、1.5.6、1.6.1几个版本的slf4j的jar包共存。。。
处理方案:
全部干掉,仅保留一套最slf4j组件,即:留个接口包: slf4j-api,留个实现包:slf4j-log4j12。
一位搞定这个问题了,结果spring的bean解析又出问题了。。。
Caused by: java.lang.NoSuchFieldError: fRecognizedFeatures
at org.apache.xerces.parsers.BasicParserConfiguration.<init>(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.<init>(Unknown Source)
at org.apache.xerces.parsers.StandardParserConfiguration.<init>(Unknown Source)
at org.apache.xerces.parsers.IntegratedParserConfiguration.<init>(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.<init>(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.<init>(Unknown Source)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at org.apache.xerces.util.ObjectFactory.newInstance(Unknown Source)
at org.apache.xerces.util.ObjectFactory.findJarServiceProvider(Unknown Source)
at org.apache.xerces.util.ObjectFactory.createObject(Unknown Source)
at org.apache.xerces.util.ObjectFactory.createObject(Unknown Source)
at org.apache.xerces.parsers.DOMParser.<init>(Unknown Source)
at org.apache.xerces.parsers.DOMParser.<init>(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.<init>(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderFactoryImpl.setAttribute(Unknown Source)
at org.springframework.beans.factory.xml.DefaultDocumentLoader.createDocumentBuilderFactory(DefaultDocumentLoader.java:99)
at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:70)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:396)
... 34 more
这次又是因为xml.xerces.jar和jdk自带的xml解析工具类冲突导致的,又是jar包冲突!!!
这个问题的解决方案有好几个,可以参考:这里
1、Use the “javax.xml.parsers.DocumentBuilderFactory” system property.
2、Use the properties file "lib/jaxp.properties" in the JRE directory.
3、Use the Services API (as detailed in the JAR specification), if available, to determine the classname. The Services API will look for a classname in the file “META-INF/services/javax.xml.parsers.DocumentBuilderFactory" in jars available to the runtime.
4、Platform default "DocumentBuilderFactory" instance,也就是类com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl。
我采用了一种简单的方式,在jvm的启动参数中加上下面的参数明确制定要用哪个实现类。
-Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl
-Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl
分享到:
相关推荐
mybatis与spring整合时所依赖的jar包,包括: 1.Mybatis所需的jar包括: ant-1.9.6.jar ant-launcher-1.9.6.jar asm-5.2.jar cglib-3.2.5.jar commons-logging-1.2.jar javassist-3.22.0-CR2.jar log4j-...
本篇将详细探讨Spring定时任务及其所需的jar包`slf4j-api-1.5.6.jar`和`slf4j-log4j12-1.5.6.jar`。 **Spring定时任务** Spring定时任务主要由`org.springframework.scheduling`包提供,基于Java的`@Scheduled`...
【标题】"springMvc+mybaties+slf4j" 涉及的技术栈是企业级应用开发中常见的组合,主要包括Spring MVC、MyBatis和SLF4J。这三者分别是Spring框架的Web模块、轻量级持久层框架和日志门面。 【Spring MVC】是Spring...
在进行ZK7、Spring4和Hibernate4的框架整合时,了解并正确使用Spring所需的jar包至关重要。 首先,Spring框架的基础包主要包括以下几个部分: 1. **spring-core.jar**:这是Spring的核心库,包含了IoC容器和基本的...
- `log4j.jar` 或 `slf4j-api.jar + slf4j-log4j12.jar`:日志处理库,用于记录程序运行中的信息。 - `jstl.jar` 和 `standard.jar`:用于处理JSP页面的标签库。 - `commons-dbcp.jar` 或 `HikariCP.jar`:连接池,...
5. 其他依赖库:如log4j或slf4j用于日志记录,asm、cglib等用于AOP代理。 整合过程大致如下: 1. 引入依赖:在项目的pom.xml或build.gradle文件中添加相关库的依赖。 2. 配置Spring:在Spring的配置文件(如...
在实际项目中,根据需求选择合适的日志实现并配置相关jar包,如`log4j.jar`或`slf4j-api.jar`和对应的实现库。 除了上述核心jar包,Spring还有许多其他模块,如`spring-web.jar`和`spring-webmvc.jar`,它们用于...
(2)spring-beans-3.2.3.RELEASE.jar //bean包 (3)spring-context-3.2.3.RELEASE.jar // 容器包 (4)spring-core-3.2.3.RELEASE.jar //核心包 (5)spring-expression-3.2.3.RELEASE.jar //表达式包 (6) ...
- `slf4j-api.jar` 和相应的实现库(如 logback-classic.jar、log4j.jar):用于日志记录,提供日志抽象层。 在实际应用中,你还需要根据具体需求选择和配置其他库,例如数据库驱动、模板引擎(如 Thymeleaf 或 ...
4. **其他依赖**:除了SSM的核心jar包外,还有一些常见的辅助库也是必需的,如`log4j.jar`用于日志记录,`slf4j-api.jar`和对应的实现库(如`slf4j-log4j12.jar`)用于日志门面,`commons-lang3.jar`和`commons-...
- `slf4j-api.jar`和`slf4j-log4j12.jar`:Simple Logging Facade for Java,作为日志接口,桥接各种日志实现,这里桥接到Log4j。 6. **数据库连接jar包**: - 通常会包含对应数据库的JDBC驱动,例如`mysql-...
- `slf4j-api.jar` 和 `slf4j-log4j12.jar`: Simple Logging Facade for Java,提供一个统一的日志接口,可适配各种日志实现,这里是适配log4j的版本。 - `commons-logging.jar`: Apache的通用日志接口,很多框架...
在使用Spring时,你需要添加对应日志框架的jar包,例如`log4j.jar`或`slf4j-api.jar`以及相应的实现库,以便进行日志记录。 在实际开发中,如果你不确定需要哪些特定的jar包,你可以选择全部导入这个压缩包中的所有...
8. **additional libraries**: Spring3可能还需要一些额外的库,如`commons-logging.jar`用于日志记录,`log4j.jar`或`slf4j.jar`作为实际的日志实现,`commons-lang3.jar`提供通用的实用工具类。 以上就是Spring3...
2. **日志包**:Spring框架通常与各种日志框架兼容,如`log4j.jar`、`slf4j-api.jar`和`slf4j-log4j12.jar`。这些日志库使得开发者可以方便地记录应用程序的运行信息,进行问题排查。SLF4J(Simple Logging Facade ...
Spring框架的核心组件主要包括`spring-core`, `spring-beans`, `spring-context`, 和 `spring-aop`等JAR包。 - `spring-core`:提供核心工具类和支持,包括IoC容器的基础和对OGNL表达式的支持。 - `spring-beans`...
7. **Logging frameworks** - 如`log4j.jar`, `slf4j-api.jar`, `slf4j-log4j12.jar`等,提供日志记录功能,对于调试和问题排查至关重要。 在集成过程中,你需要将这些Jar包添加到项目的类路径中。同时,配置Spring...
除了这些核心库,可能还需要其他依赖,如日志库(log4j、slf4j)、JSON解析库(Jackson、Gson)、Apache Commons库等,具体取决于项目需求。 在实际开发中,通常会使用构建工具(如Maven或Gradle)来管理这些依赖,...
4. **其他依赖**:如`commons-logging.jar`、`log4j.jar`等日志处理库,以及`slf4j-api.jar`、`slf4j-log4j12.jar`等SLF4J接口和适配器。 整合SSH框架时,你还需要配置web.xml文件,将Struts2的Front Controller...
5. `slf4j-api.jar` 和 `slf4j-log4j12.jar`: 日志记录库,Quartz 使用 SLF4J 作为日志抽象层,具体日志实现通常选择 Log4j。 6. `commons-lang3.jar`: Apache Commons Lang 库,提供了一些实用的工具类,可能在 ...