Maven项目打包时报错:非法字符\ufeff

打包方式:cmd命令行-进入项目目录-输入mvn clean -DskipTests package -P dev,是标准的命令行打包方式报错:非法字符: ‘\ufeff’ 需要class, interface或enum。报错的文件是一个公用包里的一个class,是datasource的,文件名是DataSourceContextHolder.class,一开始我还以为是pom文件里的dev这个profile有问题,在检查了一遍之后,发现还真有问题,修改完成后再次打包,发现还是一样的报错
摘要由CSDN通过智能技术生成

打包方式:

cmd命令行-进入项目目录-输入mvn clean -DskipTests package -P dev,是标准的命令行打包方式

报错:

非法字符: ‘\ufeff’ 需要class, interface或enum。

报错的文件是一个公用包里的一个class,是datasource的,文件名是DataSourceContextHolder.class,一开始我还以为是pom文件里的dev这个profile有问题,

在检查了一遍之后,发现还真有问题,修改完成后再次打包,发现还是一样的报错。反复确认pom profile没有问题之后,只能求助BD。

问题的解决方法很简单,在项目路径下找到报错的这个文件DataSourceContextHolder.class,用nodpad++打开。

然后在上方菜单栏找到Encoding,然后你会发现这个文件是UTF8-BOM,把他修改为UTF-8(去掉BOM),保存退出,就可以解决问题了。

我的eclipse的编码格式毫无疑问是UTF-8的

那么为什么会有一个文件变成了UTF8-BOM呢,其他的为数众多的java文件怎么就不是UTF-BOM,单单就那一个。

BOM: browser object model即浏览器对象模型,整个 BOM 的核心对象就是 window 对象,它代表的是浏览器的一个实例。

 关于utf-8编码的txt文件,windows以记事本方式保存时会在第一行最开始处自动加入bom格式的相关信息,大概三个字节

如果是按照上述书法,txt存储就会加入bom格式的话,也说不通,因为那么多的文件

在目录下都是以txt保存的,但是我只修改了DataSourceContextHolder这一个文件。打开了隔壁的文件,发现编码是UTF8并不是UTF-BOM。

我发现一个细节的地方,就是这三个文件中,dataSourceAspect和DynamicDataSource的创建时间是一致的,都是11/16 11:19,但是DataSourceContextHolder是不一样的,并不是指上图的11/19 14:57,这只是我修改编码的时间,而是创建时间本身也跟另外两个文件不同

同样都是公用包里的公用类,都是在项目建立初就复制过来的,现在产生了差异,那就只能是编译,也就是说DataSoourceContextHolder这个文件,被

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值