问题描述据资料,这是个框架bug解决方法
问题描述
使用eclipse RCP 前端框架开发桌面应用,使用p2做前端在线更新,最近打的包有时候更新1~2次能成功,但是到后面就更新出问题了,不能完成更新。查看日志,截取如下:
!MESSAGE Backup of file F
:\
2020-06-15\
*****\eclipse\jre\bin\java
.dll failed
.
!STACK
0
java
.io
.IOException
: File that was copied to backup could not be deleted
: F
:\
2020-06-15\\
*****\eclipse\jre\bin\java
.dll
at org
.eclipse
.equinox
.internal
.p2
.touchpoint
.natives
.BackupStore
.moveToBackup(BackupStore
.java
:282)
这个是说拷贝到备份的文件不能删除,看这个情况是打包自带的jre环境bin目录下的文件。
据资料,这是个框架bug
如果rcp应用打包带jre环境,那么下次在线更新就会执行以上操作,也就是说必然会出现上面的异常。 所以不能打包jre环境,打完包自己手工将jre文件夹放到包的根目录下。 问题来了,我原来就是这样操作的,不打包jre,但是问题还是存在。不得不说,这里是个大坑,如果eclipse前面已经勾选过Bundle jre 打过包,那就可能会出现这个问题。
解决方法
找个新的eclipse,专门打包用,注意不要勾选Bundle jre。这样打包后,前前后后已经测试在线更新6次,都能成功更新。