error1
1.1 错误信息
[WARNING] File encoding has not been set, using platform encoding GBK, i.e. build is platform dependent!
[INFO] Compiling 1 source file to D:\SoftwareDevelop\apache-maven-3.3.9-bin\HelloMaven\target\classes
[WARNING] /D:/SoftwareDevelop/apache-maven-3.3.9-bin/HelloMaven/src/main/java/cn/wangye/HelloMaven.java:[7,73] 编码 GBK 的不可映射字符 (0xBA)
对错误信息翻译,得到如下结果,文件编码未设置,使用平台编码GBK,即构建依赖于平台!
[INFO]编译1个源文件到D:\SoftwareDevelop\apache-maven-3.3.9-bin\ hellommaven \target\classes
[警告]/D:/SoftwareDevelop/apache-maven-3.3.9-bin/HelloMaven/src/main/java/cn/wangye/HelloMaven.java:[7.73] GBK (0xBA)
1.2 分析原因
由于我们对文件编码方式进行设置,所以Maven自动采用平台(操作系统)的编码方式进行我们代码的编码。
1.3 印证
在命令窗口中输入mvn -versin进行编码方式的查看(platfrom encoding:GBK)
D:\SoftwareDevelop\apache-maven-3.3.9-bin\HelloMaven>mvn -version
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: D:\SoftwareDevelop\apache-maven-3.3.9-bin\apache-maven-3.3.9\bin\..
Java version: 17.0.1, vendor: Oracle Corporation
Java home: D:\SoftwareDevelop\javase
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "dos"
查看我们的代码文件: 代码文件使用的是UTF-8进行编码的。
1.4 解决方法:
通过某种方法,指定maven的编码方式为UTF-8即可。
方法一:局部设置,在pom.xml文件中指定本项目的编码格式:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.bjpwoernode.maven</groupId>
<artifactId>ch01-maven</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<java.version>1.7</java.version>
//指定本项目的编码方式
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
</project>
运行结果:
D:\SoftwareDevelop\apache-maven-3.3.9-bin\HelloMaven>mvn compile
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building ch01-maven 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ ch01-maven ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]使用我们设置的UTF-8进行文件的编译,运行成功;
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ ch01-maven ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to D:\SoftwareDevelop\apache-maven-3.3.9-bin\HelloMaven\target\classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.822 s
[INFO] Finished at: 2023-10-20T11:11:12+08:00
[INFO] Final Memory: 10M/40M
[INFO] ------------------------------------------------------------------------
方法二:全局设置,新增环境变量
新建环境变量
变量名:MAVEN_OPTS
变量值:-Dfile.encoding=UTF-8
该方式全局生效
设置验证 命令窗口运行mvn -version