问题

Eclipse新的P2 Update机制,使用起来很方便,如果使用P2 plugin自带的UI,开发者完全不用写任何代码 即可实现application的在线更新。 但是P2 Update至少有2个已知的bug,都是打包jre相关的问题,讲清楚后,你会发现解决方案很简单,但是厘清之前,它甚至可能困恼你几天而没有头绪。(注:笔者当前使用的eclipse版本为4.3)

Bug1:https://bugs.eclipse.org/bugs/show_bug.cgi?id=300812

更新时更新jre目录失败,错误消息类似于

Backup of file [...]\eclipse\jre\lib\jsse.jar failed.
File that was copied to backup could not be deleted: [...]\eclipse\jre
\lib\jsse.jar.

或者

"Can't remove application_path/jre/jre/lib/charsets.jar"

这个bug是由于如果你打包产品时,勾选了Bundle JRE for this enviroment with the product。那么除了自动生成jre目录外,repository目录中也会包含jre的更新。那么,问题就来了,你打包在产品中的jre正在被使用,同时更新程序又企图backup、delete、update它,于是报错。

Bug2:http://www.eclipse.org/forums/index.php?&t=msg&th=162865

简单说,就是即使你去掉了对Bundle JRE for this enviroment with the product的勾选,打包时照样会生成jre目录。

解决方案

对于Bug1, 解决方案很简单,就是不要勾选Bundle JRE for this enviroment with the product,不自动打包jre。但是,这时候你就面临Bug2。

NOTE:

如果你是基于feature打包而不是plugin打包。那么还有一个解决办法,就是把jre打包到一个独立的feature中去,并且永远不增加这个feature的版本号,这样这个feature就不会被更新了。实际配置当然要复杂得多,而且我也还没试成功,参考https://bugs.eclipse.org/bugs/show_bug.cgi?id=300812 Comment23

对于Bug2,我给出的链接中有许多讨论,我试了真正有用的只有一个:那就是重装eclipse,然后永远永远不要勾选“Bundle JRE for this enviroment with the product”。

最后,如果结果是不能打包jre,那么上面的都是废话了。其实解决方案也很简单,就是把jre目录手动拷贝到application的根目录,然后在根目录的ini文件中加入以下两行:

-vm
./jre/bin

参考

If your Eclipse-RCP application does not want to work with update site.

RCP: P2 Update两个烦人bug和解决办法的更多相关文章

  1. 【转载】IE浏览器常见的9个css Bug以及解决办法

    IE浏览器常见的9个css Bug以及解决办法 我们在浏览网页的时候经常看见这样的现象:某个网页在IE6浏览器中打开很正常,但是在IE8里面打开可能完全变形了.或者也有可能出现完全相反的现象.这让We ...

  2. oracle执行update语句时卡住问题分析及解决办法

    转载:http://www.jb51.net/article/125754.htm 这篇文章主要介绍了oracle执行update语句时卡住问题分析及解决办法,涉及记录锁等相关知识,具有一定参考价值, ...

  3. 记CRenderTarget:DrawText()绘制中文乱码的BUG及解决办法

    原文:记CRenderTarget:DrawText()绘制中文乱码的BUG及解决办法 转载请注明出处:http://www.cnblogs.com/Ray1024 一.问题描述 在MFC中使用Dir ...

  4. Dumpzilla工具第615行bug的解决办法

    Dumpzilla工具第615行bug的解决办法   在Dumpzilla使用选项frequency时,会提示SQL语法错误.这是由于其中SQL语句编写错误.需要将615行中: where url l ...

  5. (原创)spring mvc和jersey rest 组合使用时单例对像实例化两次的BUG及解决办法

    项目中没用spring 的restTemplate 而是采用 jersey来做rest 的实现,一直用着,也没发现有什么不对,后来加入了,以quartz用硬编码方式实现,结果启动项目的时候报错 ,具体 ...

  6. ie6双边距bug及其解决办法

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. 最新版jQuery v3.3.1的BUG以及解决办法(什么问题不重要,怎么解决问题才重要)

    发现问题 最新版的 FineUIPro v5.2.0 中,我们将内置的 jQuery v1.12.4 升级到 jQuery v3.3.1 ,可以看升级记录: +升级到jQuery v3.3.1.    ...

  8. React + antd 组件离开页面以后出现Can only update a mounted or mounting component 的解决办法

    做项目的过程中,来回切换页面时,一直遇到Can only update a mounted or mounting component 这个问题,原因是当离开页面以后,组件已经被卸载,执行setSta ...

  9. 【转】JS浮点数运算Bug的解决办法

    37.5*5.5=206.08 (JS算出来是这样的一个结果,我四舍五入取两位小数) 我先怀疑是四舍五入的问题,就直接用JS算了一个结果为:206.08499999999998 怎么会这样,两个只有一 ...

随机推荐

  1. 微信公众号内H5调用微信支付国内服务商模式

    最近在折微信公众号内H5用JSAPI调用微信支付,境内服务商版支付,微信支付给出的官方文档以及SDK不够详细,导至我们走了一些弯路,把他分享出来,我这边主要是用PHP开发,所以未加说的话示例都是PHP ...

  2. java final方法的作用

    1. 不想让别人修改方法实现. 2. 在方法调用时使用内嵌调用. 3. 有效的“关闭”动态绑定,这样编译器就可以为final方法调用生成更有效的代码. Java编程思想: “然而,大多数情况下,这样做 ...

  3. BizTalk开发系列(二十五) SQL Adapter

    SQL Server 是.NET开发的首选数据库.当然开发BizTalk应用程序很多也离不了SQL Server.针对SQL Server的数据操作BizTalk 提供了SQL Adapter作为与数 ...

  4. php课程---JavaScript改变HTML中的元素

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. graph | hungary

    匈牙利算法,求二分图最大匹配. 若P是图G中一条连通两个未匹配顶点的路径,并且属于M的边和不属于M的边(即已匹配和待匹配的边)在P上交替出现,则称P为相对于M的一条增广路径.(M为一个匹配) 由增广路 ...

  6. 使用 JavaScript 实现栈

    1.栈的基本操作 function Stack() { //使用数组保存栈元素 var items = []; //添加新元素到栈顶(相当于数组的末尾) this.push = function(el ...

  7. 1920.154s 0.309s 30817

    MyISAM HASH  restart-buffer ; ; ; SELECT * FROM grab_sales_rank_month; ; 受影响的行: 时间: .002s [SQL] ; 受影 ...

  8. 【Algorithms】归并排序(merge sort)

    几个比较常见的排序算法里头,这个我是比较生疏的一个,有一天突然被问了一个问题是,归并排序最大的特点是什么,我才想起这个算法来.下午又看不进书啦,就实现一下,记下来. 归并排序采取的是分治策略,就是先将 ...

  9. 检测中文长度gbk下2个字节

    //$str = 'fff&sdf你是sdf好fdf啊b歌hello中world';$str = 'd你b_fff是好啊歌中潺潺 ';echo chineselength($str).&quo ...

  10. 能套用的tab栏切换

    效果: 在style.js文件里封装了一个Show函数,有4个参数,di(当前点击的按钮),num(按钮个数,也可以说是下面具体内容个数),divn(一个id前缀,这个例子里是ta,),active( ...