BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Eclipse与Java 6u21的问题

| 作者 Alex Blewitt 关注 4 他的粉丝 ,译者 张龙 关注 14 他的粉丝 发布于 2010年8月2日. 估计阅读时间: 3 分钟 | CNUTCon 了解国内外一线大厂50+智能运维最新实践案例。

近日,Oracle发布了Java 6 update 21,对java.dll的创建方式进行了一些细小但无伤大雅的变更。然而不幸的是,这个改变影响了Eclipse的启动,对Eclipse造成的影响要远远大于曾经的Sun所拥有的NetBeans。

变化之处是在创建dll时,将COMPANY_NAME=Sun Microsystems, Inc.改为了COMPANY_NAME=Oracle Corporation。然而不幸的是,Eclipse使用DLL的名字来确认是否可以安全地附加非标准的-XX:MaxPermSize。如果存在该标识但却不被支持,那么某些JVM就无法成功启动,因此就不能将-XX:MaxPermSize放在Eclipse的启动文件中(eclipse.ini),而是附加了一个新的参数--launcher.XXMaxPermSize 256m,如果Windows上的加载器检测到是Sun VM,那么就会自动附加-XX:MaxPermSize=256m。

这种自动检测发生在C加载器中(eclipse.exe)而非VM,这是因为一旦运行了VM,那么就没法修改属性了。为了能快速实现该功能(说实在的,这么做有点不妥),eclipse.exe加载器会检查Sun Microsystems字符串以确定可否增加该标识。

因此,这个变化破坏了Eclipse的加载过程,导致加载时出现OutOfMemoryError错误。这个问题很快被报告给了Eclipse,接下来Eclipse将参数名字修改为Oracle,该问题很快就被解决掉了

虽然商标变更这种事是Oracle自己的权利(甚至都没必要在发布声明中提及这一点),但这却着实地影响到了Eclipse,不仅是当前的3.6版,还有基于3.5、3.4、及3.3的所有IDE与RCP。对于Eclipse来说,需要按照顺序来修复这个问题;目前,有个补丁程序可以修复最新版Eclipse加载器的这个问题,但还并没有直接发布,因为至少要考虑到Eclipse 3.5与3.4,为的是确保兼容性。

Oracle因快速的问题解决速度而备受称赞。虽然他们并不需要解决这个问题,但还是在几天内就解决了,随后的Java构建版本也会修复这个问题(是否要重新构建6u21抑或是6u22还不太确定)。与此同时,如果你遇到了Eclipse的问题,同时最近又安装了Java 6u21(或是自动更新的),那么可以降级到Java 6u20或是按照FAQ的指导重新启用permgen size。

查看英文原文:Eclipse and Java 6u21 problems

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

小问题,大影响。 by 郑 立

小问题,大影响。

Re: 小问题,大影响。 by Li Jacky

比较困惑的是Oracle版本发布的兼容性测试是如何做的,没理由不测试Eclipse这个使用量巨大的IDE啊。

Re: 小问题,大影响。 by 仇 科旭

eclipse这种做法实在欠妥,不知道eclipse的文档中是否有描述到依赖vendor这个特性呢

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

3 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT