字符编码界的混乱我们在此不想多提,我们只能祈祷所依赖的平台和环境能够尽可能完善的处理它们
…
但是,吃芝麻还有掉烧饼的时候,字符编码似乎像赶不走的幽灵,时不时的来恼你一下
…
这不,
Maven2
也被它劫持,跟我来了个狸猫换太子
…
莫名其妙的没有问题
之前使用
Maven2
作为项目的构建工具,运行的一直很好,虽然每次启动的时候都有
[WARNING] Using platform encoding (GBK
actually) to copy filtered resources, i.e. build is platform dependent!
的警告,但开发机和服务器分别属于
windows
和
linux
系统,均没有出问题,所以也没有太过在意它。
莫名其妙的出了问题
但是就在昨天,我用
eclipse
打开了几个
xml
并关闭(并未做修改)之后,项目开始出现问题,
war
无法被正常部署到
tomcat
上,而使用
mvn tomcat:run-war
直接运行时,提示如下异常:
com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException:
Invalid byte 3 of 3-byte UTF-8 sequence.
at
com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.invalidByte(UTF8Reader.java:674)
at
com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(UTF8Reader.java:425)
…
|
根据提示,找到出此问题的
xml
文件,其中存在中文,但并没有发现什么异常,从
svn
中
revert
,也无法解决问题。而在服务器(
linux
环境)上,没有任何异常出现。
莫名其妙的找不到原因
由于之前被字符编码折磨过多次,而在此之前这些文件中包含中文并没有问题,因此首先意识到是不是
BOM header
的问题,于是找来
UltraEdit
,打开分析出问题的
xml
文件,发现确实前三个字节被
UTF-8
的
BOM header
占据了,于是将其去掉,运行
…
故障依旧。
此路不通,另辟他径,试着将文件中的中文全部删除,异常没有了
…
虽然变相的解决了这个问题,但是,没有
BOM header
和不支持中文始终让人感到不爽,而且既然是
UTF-8
的编码,就没有理由让我用回英文。真相还是没有出来。
莫名其妙的被调包了
正向分析找不到原因,看来只能逆向跟踪每个步骤来找线索了(极度怀疑自己是不是破案片看多了)。找到被打包的
war
文件,解压,查看,果然发现
xml
文件被损坏(中文全部变成了乱码)!
看来是中间过程中文件被损坏了。仔细检查了一下整个自动化过程,发现构建、打包的时候有被修改的可能,于是又打开
target
目录下的
class
目录(即打包之前的文件目录),发现这里的
xml
也被破坏了,那么可以初步断定,资源文件在被复制出来的时候,被调了包。
真相大白
经过逐步检查,发现原来是
Maven2
在复制资源文件时,使用系统编码(也就是上面那个警告所提到的)对资源进行解码,从而造成了
UTF-8
文件被当做
GBK
(
windows
下默认编码是
GBK
)来解码,损坏了
xml
文件。而出现这一情况都是昨天在
pom.xml
中加入
resource
标签之后,那么到此问题真相大白了。
既然找到原因所在,那么解决它也很容易,在
maven-resources-plugin
插件中配置
encoding
为
UTF-8
即可,如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
分享到:
相关推荐
标题“maven2离线安装包”指的是针对Maven 2的不依赖网络环境的安装包,主要用于在没有互联网连接或者网络环境不稳定的情况下安装和使用Maven。Maven是一个项目管理和综合工具,它简化了Java项目的构建、依赖管理和...
maven2的eclipse插件 for eclipse 3.5+。 插件安装时,我们只需在eclipse根目录下新建一个【links】目录,然后在里面创建【.link】扩展名的文件,在里面写上类似于【path=F:\\IDE\\eclipsePlugin\\maven2】这样的...
【Maven 2 详细教程】是一份专为开发者准备的指南,旨在详细介绍Apache Maven 2的使用方法和核心概念。Maven 2是一个强大的构建工具,尤其在处理大型、多模块的Java项目时,能够简化构建过程和依赖管理。在现代软件...
2. understands GBK编码的特点:GBK编码是一种简体中文编码方案,它支持 Unicode 字符的子集。但是,GBK编码不支持所有 Unicode 字符,这可能会导致IDEA在编译代码时出现错误。 3. 使用UTF-8编码:UTF-8是一种通用的...
maven2之m2eclipse使用手册.doc
Maven是Java开发中的一款项目管理和综合工具,它简化了构建过程,通过提供一个标准化的构建系统,使得项目依赖管理变得更加简单。Maven 3.6.3是Maven的一个稳定版本,它带来了许多改进和修复,提升了构建效率和用户...
支持maven2 maven3 通用版本eclipse插件,在maven官网下载apache-maven-3.2.1-bin.zip,解压插件压缩包到path=D:\m2e-0.12.0.20101115-1102 在eclipse新建links文件夹,新建文件maven23.link,内容为:path=D:/m2e-...
maven2 jar包 maven2 jar包 maven2 jar包 maven2 jar包 maven2 jar包 maven2 jar包 maven2 jar包 maven2 jar包 maven2 jar包 maven2 jar包 maven2 jar包 maven2 jar包
标题 "maven2 eclipse" 暗示了我们要讨论的是如何在 Eclipse 集成管理 Maven 项目。这篇博文可能是关于如何将 Maven 2.x 集成到 Eclipse 开发环境中,以便更有效地构建和管理Java项目。Maven 是一个项目管理和综合...
### Apache Maven 2 有效实施知识点详解 #### 一、Apache Maven 2 概述 Apache Maven 是一个项目管理和理解工具。它包含了构建过程(build process)、软件项目信息和最佳实践指南。Maven 的主要目标是让构建过程...
myeclipse自带有maven插件相难用,而且不能创建maven项目,需要独立安装,即可顺利创建maven项目。 1、删除默认的maven,在该目录下直接搜索maven,删除所有相关的jar和目录。 2、下载maven文件,从...
【Maven项目Struts2 Demo】是一个典型的Java Web应用程序示例,它利用了Apache Maven作为构建工具,Struts2作为MVC(Model-View-Controller)框架,以及JDK 1.7、Eclipse 4.5和Tomcat 6作为开发和运行环境。...
** Maven 概述** Maven 是一个强大的项目管理和构建工具,广泛应用于Java开发领域。它通过使用一个统一的构建过程,简化了项目的构建、依赖管理以及文档生成等任务。Maven 3.5.2是Maven的一个稳定版本,包含了众多...
【标题】"maven之开源中国Maven库" 指的是使用 Maven,一个流行的Java项目管理和集成工具,与开源中国的Maven仓库进行交互。开源中国Maven库是中国的一个开源软件资源平台,提供了大量的开源Java库,使得开发者可以...
maven2的插件,用于在eclipse下进行maven2的快速配置 打开eclipse .选择菜单 window ->preferences ; 在新打开的对话框的左边的一列会看到一个名为Maven2的选项。鼠标单击,然后点击右边的Local Repository Folder ...
maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装...
在本实例中,我们将通过Maven来搭建一个完整的Struts2项目,探讨如何利用Maven管理和构建Struts2应用,并了解Struts2处理JSON数据的两种主要方法。 首先,Maven是Apache软件基金会开发的一款项目管理和集成工具,它...
2. 在 Maven 命令中添加-Dfile.encoding=UTF-8 参数: `mvn clean package -Dfile.encoding=UTF-8` 3. 在项目的 resource 文件夹下添加一个资源文件 encoding.properties,内容如下: `encoding=UTF-8` 三、详细...
Maven 2 使用手册,chm中文格式。
**Maven 3.0 知识点详解** Apache Maven 是一个项目管理和综合工具,尤其在Java开发领域中被广泛使用。Maven 3.0是Maven的一个重要版本,它引入了许多改进和新特性,旨在提高开发效率,增强构建过程的可配置性和...