eclipse RCP 工程打包p2更新问题 File that was copied to backup could not be deleted:

    技术2022-07-11  113

    问题描述据资料,这是个框架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次,都能成功更新。

    Processed: 0.009, SQL: 9