Maven使用FAQ:与Maven版本和字符集编码有关的编译错误处理
2010-12-15 12:07
573 查看
Maven使用FAQ:与Maven版本和字符集编码有关的编译错误处理
在Maven3.0下创建了一个POM文件,可对项目进行正常的构建,但版本改为Maven2.2.1时却出现类似如下的编译错误:
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Compilation failure
D:/workspace/rbdp/src/main/java/com/util/Test.java:[20,49] 需要 '}'
D:/workspace/rbdp/src/main/java/com/util/Test.java:[20,50] 非法字符: /65533
D:/workspace/rbdp/src/main/java/com/util/Test.java:[20,51] 需要 <标识符>
D:/workspace/rbdp/src/main/java/com/util/Test.java:[20,52] 需要 ';'
…
该错误显然跟字符集编码有关,但POM文件中已指定了编码为UTF-8,在POM文件中包含如下内容:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
经反复试验和分析,发现这跟Maven版本有关。Maven3和Maven2版本变化不小,不完全兼容。
具体解决方法说明如下:
在确认POM文件中已有上述<project.build.sourceEncoding>内容的前提下,增加以下内容(如已包含maven-compiler-plugin的相关内容,则只需在相应位置增加红色字体部分内容):
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
注意:
1、同时指定<project.build.sourceEncoding>属性和<encoding>的方式可适用于Maven2和Maven3。
2、在Maven3中可以只增加<project.build.sourceEncoding>属性而不指定<encoding>,即能解决编译问题。如果只指定<encoding>编译不会出错,但会出现以下警告。建议两者都进行指定或只指定前者。警告信息如下:
[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent!
3、在Maven2中,如果只指定<project.build.sourceEncoding>属性则编译出错;如果只指定<encoding>编译不会出错,但会出现与第2点类似的警告,建议两者都进行指定,以免对运行产生影响。
在Maven3.0下创建了一个POM文件,可对项目进行正常的构建,但版本改为Maven2.2.1时却出现类似如下的编译错误:
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Compilation failure
D:/workspace/rbdp/src/main/java/com/util/Test.java:[20,49] 需要 '}'
D:/workspace/rbdp/src/main/java/com/util/Test.java:[20,50] 非法字符: /65533
D:/workspace/rbdp/src/main/java/com/util/Test.java:[20,51] 需要 <标识符>
D:/workspace/rbdp/src/main/java/com/util/Test.java:[20,52] 需要 ';'
…
该错误显然跟字符集编码有关,但POM文件中已指定了编码为UTF-8,在POM文件中包含如下内容:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
经反复试验和分析,发现这跟Maven版本有关。Maven3和Maven2版本变化不小,不完全兼容。
具体解决方法说明如下:
在确认POM文件中已有上述<project.build.sourceEncoding>内容的前提下,增加以下内容(如已包含maven-compiler-plugin的相关内容,则只需在相应位置增加红色字体部分内容):
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
注意:
1、同时指定<project.build.sourceEncoding>属性和<encoding>的方式可适用于Maven2和Maven3。
2、在Maven3中可以只增加<project.build.sourceEncoding>属性而不指定<encoding>,即能解决编译问题。如果只指定<encoding>编译不会出错,但会出现以下警告。建议两者都进行指定或只指定前者。警告信息如下:
[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent!
3、在Maven2中,如果只指定<project.build.sourceEncoding>属性则编译出错;如果只指定<encoding>编译不会出错,但会出现与第2点类似的警告,建议两者都进行指定,以免对运行产生影响。
相关文章推荐
- 使用maven的jetty插件项目一直报编译版本的错误
- 在MAVEN中配置JAVA源代码的编译版本及编码字符集
- 使用maven编译的时候提示 maven-source 1.3 中不支持注释请使用 -source 5 或更高版本以启用注释的错误。
- jenkins 使用 maven的pom.xml编译的时候提示 错误: 编码GBK的不可映射字符
- idea 使用maven编译项目时出现源码版本警告的处理方式
- Maven项目在编译及导入Eclipse时出现的错误汇总处理
- maven 打包编译的错误 :sun.misc.BASE64Decoder 是 Sun 的专用 API,可能会在未来版本中删除
- 关于AndroidStudio中(有关详细信息, 请使用 -Xlint:deprecation 重新编译)的错误解决方案!
- maven编译出现错误 无效的目 标版本: 1.7
- 非OpenGL版本的Qt使用QGLWidget构建OPenGL应用须知与编译错误解决方法
- 使用PROC编译.pc文件时错误情况及处理
- 依赖库arr包,提交到Nexus搭建的Maven私服,编译过程中出现的问题:错误: 编码GBK的不可映射字符
- MAVEN编译时错误:编码GBK的不可映射字符
- Linux系统平台下关于GCC编译及使用的方法(-Werror,它要求GCC将所有的警告当成错误进行处理 )
- 通过Maven编译工程时 编码 GBK 的不可映射字符 错误
- 创建ROS工作空间使用catkin_make时出现和python编译器有关的编译错误
- Flask使用SQLAlchemy时报字符集错误处理
- Linux系统平台下关于GCC编译及使用的方法 (-Werror,它要求GCC将所有的警告当成错误进行处理
- Entity Framework7 入门之全功能.NET版本下使用EF7(含源码)另附数据迁移常见错误处理
- xcode7编译老版本程序时提示错误的处理方法