
1. 使用gradle clean war命令将项目打包到war软件包中. 在此过程中,gradle不会提示错误.
2. 将获得的myapp.war复制到tomcat(部署war包)下的webapps
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无法解压缩战争. 使用WinRAR软件解压缩获得的war软件包,发现它也失败了. 这样,我们可以知道gradle编写的war包是有缺陷的. 为什么gradle的战争配套有问题?
我用WinRAR打开(注意它没有被解压缩)gradle文件需要解压么,发现了一个令人惊讶的结果: 有2个带有中文名称的文件,它们不包含在战争中. 我手动将这两个文件保存到myapp.war的相应位置gradle文件需要解压么,最后使用winRAR将其提取,发现可以成功提取它们. 因此得出一个结论: 打包gradle时,它将忽略包含中文的目录和文件.

解决方案是修改GRADLE_HOME / bin / gradle(Windows系统中的gradle.bat)中的变量DEFAULT_JVM_OPTS
DEFAULT_JVM_OPTS="-Dfile.encoding=UTF-8"

修改配置并重新打包后,发现获得的war软件包已经包含带有中文名称的目录和文件. 使用WinRar进行解压缩是正常的,并且已成功部署到tomcat. 在文件路径中包含中文是很麻烦的,这不是最佳编程实践.
使用构建工具gradle打包时遇到的中国问题和解决方案
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-195777-1.html
Fxfighting
股市
三国演义都没看过吧