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

本文介绍了解决Gradle构建WAR包时中文文件名导致的问题。通过修改Gradle JVM选项来支持UTF-8编码,确保WAR包能正确包含中文文件名,并成功部署到Tomcat。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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也成功了。

文件路径中含有中文是一件非常麻烦的事儿,也不是最佳编程实践。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值