1、maven编码 gbk 的不可映射字符
解决这个问题的思路: 在maven的编译插件中声明正确的字符集编码编码——编译使用的字符集编码与代码文件使用的字符集编码一致!!
安装系统之后,一般中文系统默认字符集是GBK。我们安装的软件一般都继承使用操作系统的默认字符集。
所以在很多中文XP win7上开发的同学,在使用maven(mvn compile)编译项目的时候,就会出现“编码 gbk 的不可映射字符”: 这个是由于代码使用的UTF-8,而maven编译的时候使用的GBK的缘故。 通过修改pom文件,可以告诉maven这个项目使用UTF-8来编译。在pom的/project/build/plugins/下的编译插件声明 中加入下面的配置:(最好在parent 中配置)
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>utf8</encoding>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
2、NoSuchMethodError: org.codehaus.jackson.type.JavaType.<init>(Ljava/lang/Clas
这种问题属于jar包冲突:jackson-mapper-asl-1.9.*.jar如spring自带的jar包com.springsource.org.codehaus.jackson.mapper-1.4.2.jar冲突,从而在项目初始中抛出上述异常。解决方法是将com.springsource.org.codehaus.jackson.mapper-1.4.2.jar移除。
spring MVC在使用jackson时一定要注意:jackson-core-asl-1.9.*.jar和jackson-mapper-asl-1.9.*.jar的版本号一定要相同,如:同时使用1.9.10。
3、java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileItemFactory
缺少fileupload包
4、 ClassNotFoundException: org.hibernate.cache.TimestampsRegion
后来找到原因, net.sf.ehcache.hibernate.EhCacheRegionFactory 不支持hibernate4
hibernate4支持ehcache的话,需要引入
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>4.1.2.Final</version>
</dependency>
5、NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config
使用Eclipse中的Maven插件m2eclipse时,在加入依赖时利用索引查找JSTL列出两个选择:
- javax.servlet - jstl
- jstl - jstl
如果你选择的了jstl - jstl 其中的jar会发现没有JSTL 1.2的版本,再选择了其它的版本后,m2eclipse下载包文件会出错,必须选择javax.servlet - jstl条目下的包文件才能正确下载包。Maven的索引还真够乱的。