码迷,mamicode.com
首页 > 其他好文 > 详细

使用构建工具gradle打包时,遇到的中文问题和解决方案

时间:2014-10-24 18:58:38      阅读:449      评论:0      收藏:0      [点我收藏+]

标签:gradle打war包   gradle中文问题   gradle打出的war包部署失败   

1、使用gradle  clean  war 命令将项目打成war包,这一过程gradle没有提示报错。

2、将得到的myapp.war拷贝到tomcat下webapps(部署war包)

3、启动tomcat的时候,发现加载myapp.war失败,错误信息如下:

java.lang.IllegalArgumentException: MALFORMED  
    at java.util.zip.ZipCoder.toString(Unknown Source)  
    at java.util.zip.ZipInputStream.readLOC(Unknown Source)  
    at java.util.zip.ZipInputStream.getNextEntry(Unknown Source)  
    at com.yc.utils.TestZip.extZipFileList(TestZip.java:40)  
    at com.yc.utils.TestZip.main(TestZip.java:21) 


 

这是因为tomcat启动的时候,会将.war文件解压,以文件夹的形式存放在webapps/下。显然出现上面的问题,是因为tomcat解压war失败。将得到的war包用WinRAR软件解压,发现也失败了。这样可以知道:是gradle打出的war包有问题,是损坏的。为啥gradle打的war包有问题了?

 

我用WinRAR打开(注意不是解压),发现了一个惊讶的结果:有2个含有中文名的文件,没有包含在war中。我将这2个文件手动到myapp.war的对应位置后保存,最后再用winRAR解压,发现能够成功解压。于是得出一个结论:gradle打包的时候会忽略含有中文的目录和文件

 

解决方案是: 修改GRADLE_HOME/bin/gradle(windows系统中是gradle.bat)中的变量DEFAULT_JVM_OPTS

DEFAULT_JVM_OPTS="-Dfile.encoding=UTF-8"


修改配置之后重新打包,发现得到的war包中已经包含了名称含有中文的目录和文件。用WinRar解压也是正常的,部署到tomcat也成功了。文件路径中含有中文是一件很麻烦的事儿,也不是最佳编程实践。

 

 

使用构建工具gradle打包时,遇到的中文问题和解决方案

标签:gradle打war包   gradle中文问题   gradle打出的war包部署失败   

原文地址:http://blog.csdn.net/aitangyong/article/details/40429485

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!