使用构建工具gradle打包时,遇到的中文问题和解决方式
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
1.Summary 从Android团队开始宣布放弃Eclipse转投Android Studio时,构建工具Gradle进入了Android开发者的视野.而随着热修复.插件化.编译时注解的流行, ...
- 【翻译自mos文章】使用aum( Automatic Undo Management) 时遇到 ORA-01555错误--- 原因和解决方式。
使用aum( Automatic Undo Management) 时遇到 ORA-01555错误--- 原因和解决方式. 參考原文: ORA-01555 Using Automatic Undo M ...
- 新一代构建工具gradle学习
简介:Gradle的出现,是技术发展的必然,站在了Ant.maven等构建工具的肩膀上,使用了一种强大且具有表达性的基于Groovy的领域特定语言(DSL),使其拥有易用且灵活的方式去实现定制逻辑.方 ...
- 初识构建工具-gradle
构建工具的作用 依赖管理 测试,打包,发布 主流的构建工具 Ant:提供编译,测试,打包 Maven:在Ant的基础上提供了依赖管理和发布的功能 Gradle:在Maven的基础上使用Groovy管理 ...
- 构建工具-----Gradle(二)-----myeclipse 10和myeclipse2015安装gradle插件----其他版本的myeclipse类似
我们需要给myeclipse安装gradle的插件.这样myeclipse就能识别到gradle项目了,直接加载进去即可. 我们先安装配置系统命令行的gradle,挺简单的,下载后配置环境变量即可,详 ...
- 构建工具Gradle安装和简单使用
1. 安装 到gradle官网下载页 https://gradle.org/gradle-download/ 下载gradle,其中“完全版(Complete distribution)”包含除了运行 ...
- 下一代的前端构建工具:parcel打包react
1. parcel很受欢迎,webpack太慢了,试试Parcel下一代的前端构建工具 2.Parcel很快,但缺少好多插件,没有base64,没有办法拆分打包文件.... 3.总结:适合小项目 4. ...
- 基于 Groovy 的自动化构建工具 Gradle 入门(转)
本人工作之初没有使用自动化构建,后来敏捷了,开始使用 Ant - 完全面向过程的定义步骤,不进行依赖管理.再发展到 Maven,面向对象的方式管理工程,有了依赖的管理,JAR 包统一从中央仓库获得,保 ...
- 项目构建工具Gradle的使用入门(参考,只表明地址)
Gradle入门介绍:简介 http://blog.jobbole.com/71999/ Gradle入门介绍:第一个Java项目 http://blog.jobbole.com/72558/ Gra ...
随机推荐
- 挑战程序设计竞赛》P345 观看计划
<挑战程序设计竞赛>P345 观看计划 题意:一周一共有M个单位的时间.一共有N部动画在每周si时 ...
- Ubuntu中配置Tomcat与Eclipse整合
Apache Tomcat 作为web服务器已经广泛用于Java Servlets 和 JSP (Java Server Pages) 开发. 环境:Ubuntu10.10 java环境的配置见另一篇 ...
- 【小米3使用经验】小米3联通版 miui7.2.11稳定版刷机
1.我的手机是小米3联通版的,买来后为了配合公司的手机开发,将Android系统升级到4.4.4版本,MiUi为默认版本. 前段时间可能不小心开启了自动升级,结果Android系统升级到6.0.1版本 ...
- python3字符串操作总结
字符串截取 >>>s = 'hello' >>>s[0:3] 'he' >>>s[:] #截取全部字符 'hello' 消除空格及特殊符号 s. ...
- php通过$_SERVER['HTTP_USER_AGENT']获取浏览器相关参数
最近不忙,同事在忙一个app项目.当听到领导安排让他做一个判断苹果还是安卓手机,如果是安卓手机下载安卓app.如果是苹果手机下载苹果app;然后我就上网搜了一下学习学习: php通过$_SERVER[ ...
- Android代码中设置字体大小,字体颜色,显示两种颜色.倒计时效果
Android代码中设置字体大小,字体颜色,显示两种颜色 在xml文件中字体大小用的像素 <TextView android:id="@+id/uppaid_time" an ...
- 关于ProGuard的学习了解(从别处转来)
关于ProGuard的学习了解(从别处转来) [Android]jar包Proguard混淆方法 Proguard 使用详解 Proguard语法及常用proguard.cfg代码段 Proguard ...
- Linux基础学习3
鸟哥私房菜第十一章 read 用来读取键盘输入的变量,常被用在shell script的交互当中 [root@www ~]# read [-pt] variable 选项不参数: -p :后面可以 ...
- mysql count(*) 和count(1)区别
count *更快, 不要加where,否则同count(1)效率相同 sql语句对大小写不敏感,关键字一般大写,其他小写, count(*)不加where,mysql会直接返回总条数,因为mysql ...
- Incorrect column count: expected 1, actual 2
List<Long> idList = queryForList("ass.pageQuery_sgIds", paramMap, Long.class); 报错:In ...