maven install COMPILATION ERROR 非法字符: '\ufeff'

在执行maven install时遇到COMPILATION ERROR,错误原因为.java文件存在非法字符'ufeff'。这通常是由于文件使用了带BOM的UTF-8编码。解决方案包括将这些文件转换为纯UTF-8编码。通过在Linux环境下进行批量处理,使用xxd查看文件内容,使用sed命令移除BOM,并编写shell脚本批量处理整个目录及其子目录下的所有文件。

maven install时,发生COMPILATION ERROR ,具体原因是:***.java:[1,1] 非法字符: '\ufeff'

一种由于BOM引起的编译错误,查看此java类的属性,发现此文件的编码方式是Byte Order Mark is UTF-8(BOM):

其他正常的文件编码方式是 UTF-8:

解决问题方式:把文件带有BOM的UTF-8转换为纯UTF-8。

 

解决步骤:

1,把有此问题的所有文件所在的目录上传到linux环境便于批量处理。business目录

2,单个文件分析:以16进制显示文件内容 xxd

3,要处理的就是package前面的三个... 对应的编码是efbb bf:单个文件处理:

sed '1s/^\xef\xbb\xbf//' AmtGradedArbitrageEntity.java > AmtGradedArbitrageEntity.java1

处理后的结果:package之前的...已经处理完毕

4,把处理之后的文件修改名字替换原来的文件

 

单个文件处理完毕,若文件比较多,我们需要批量处理目录里面所有的文件方式如下:

1,vi batch.sh 输入如下代码段:

# ./thisfilename.sh source
# NOTE:
#
#  ensure this .sh file is changed mod
#  source is which dir you want to operate

function getfiles(){
 for file in `ls $1`
 do
     if [ -d $1"/"$file ]
     then
        #echo $1"/"$file
        getfiles $1"/"$file
     else
        # 这里是对文件的操作,可以是移动,删除,复制,
        # 也可以在对文件进行判断,支队指定类型的文件进行操作
      #`mv $1"/"$file direSource`
        echo $1"/"$file
        #mv $1"/"$file $1"/"$file"1"
        sed '1s/^\xef\xbb\xbf//' $1"/"$file >$1"/"$file"1"
        mv $1"/"$file"1" $1"/"$file
     fi
       done
}
getfiles $1

2,sh batch.sh business #business是要处理的文件夹目录。执行完毕后,business下包含子目录下所有的文件都会处理成不含bom的utf-8格式

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值