使用构建工具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也成功了。文件路径中含有中文是一件很麻烦的事儿,也不是最佳编程实践。

时间: 2024-10-07 06:33:18

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

项目自动构建工具gradle使用

================================================================================================= 环境初始化: sudo apt-get install gradle 建立项目文件夹 mkdir gs-gradle 建立项目文件结构 cd gs-gradle mkdir initial mkdir complete mkdir test 建立程序文件结构 cd initial mkdir -p sr

项目构建工具gradle

1.安装 https://gradle.org/install 2.构建一个项目 https://guides.gradle.org/creating-new-gradle-builds/ 3.build 存在的项目 https://guides.gradle.org/using-an-existing-gradle-build/ 用户手册 https://docs.gradle.org/current/userguide/userguide.html

构建工具的发展及Android Gradle快速上手

前话: 最近谷歌宣布官方不再维护Eclipse ADT了,之后将更加专注于Android Studio的功能和性能上的改进,早在2013年的Google IO大会上首次推出了Android Studio,当时刚出来的时候我就好奇的去下载体验了一下,想看一下新开发工具的优势在哪里,据官方介绍,最吸引我的一点就是使用Studio使用了Gradle编译系统,可以支持很灵活的定制需求,而我当时正在研究当成库使用的APK(就是现在的aar文件,不过当时还没有出身),刚好遇到了ADT编译系统的限制,所以当时

Android Studio下项目构建的Gradle配置及打包应用变体

Gradle简介 ??Gradle是一个自动化构建工具,采用Groovy的Domain Specific Language(领域特定语言)来描述和控制构建逻辑.具有语法简洁.可读性强.配置灵活等特点.基于Intellij IDEA社区版本开发的Android Studio天生支持Gradle构建程序.Groovy是一种基于JVM的敏捷开发语言,结合了Phthon.Ruby和Smalltalk的许多强大特性.同时,Groovy代码既能够与java代码很好地结合,也能够用于扩展现有的代码. Grad

Gradle与Makefile构建工具的对比

随着Android Studio的普及,越来越多的Android开发者也要开始了解和学习Gradle这款强大的代码构建工具了.我们在学习和了解一项新事物的时候,最快速的方法往往是与已知的事物进行比较,对于熟悉Makefile编译机制的Linux程序员而言,认识和掌握Gradle最好的方法莫过于比较它们之间的区别了,本文不准备详细介绍Gradle的方方面面,而是希望通过与Makefile的对比帮助Gradle初学者更快速地理解Gradle的基础和原理. Makefile是一种管理和编译 Linux

Gradle 构建工具

参考文章: 作者:ghui 链接:https://www.zhihu.com/question/30432152/answer/48239946 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具.它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML.当前其支持的语言限于Java.Groovy和Scala,计划未来将支持更多的语言. 上面是维基上对Gr

一览新的 Android Gradle 构建工具:新的 DSL 结构 和 Gradle 2.5

译者地址:[翻]一览新的 Android Gradle 构建工具:新的 DSL 结构 和 Gradle 2.5 原文:First Look at New Android Gradle Build Tools: The new DSL structure and Gradle 2.5 双语对照地址: [翻-双语]一览新的 Android Gradle 构建工具:新的 DSL 结构 和 Gradle 2.5 翻译: MrFu 校验: MrFu Android Studio 1.3 的平台已经接近于稳

Java构建工具:如何用Maven,Gradle和Ant+Ivy进行依赖管理

原文来自:https://zeroturnaround.com/rebellabs/java-build-tools-how-dependency-management-works-with-maven-gradle-and-ant-ivy/ 编译的时候可以运行,运行时出问题 在当今java项目自动化构建的场景当中,依赖管理已经成为了项目构建自动化工具中的一个主要部分,但是在过去并总是这样. 回想以前那个很爽的时候,你的项目依赖性管理只需要将jar包导入到lib文件夹中,然后将其加入到你的版本控

Android Studio使用新的Gradle构建工具配置NDK环境

从Android Studio 1.3 Beta1开始,就支持了NDK.不过使用的是一个全新的实验性的gradle构建工具.官方地址http://tools.android.com/tech-docs/new-build-system/gradle-experimental,英文好的可以直接看原文. 在进行配置前请先将Android Studio更新至最新版本,目前最新版本是1.4 Bata4 并且使用Android Studio内置的SDK管理器下载NDK. 或者在项目上右键打开Project