[情報] Eclipse與Java 6u21的問題
近日,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
。
http://www.infoq.com/cn/news/2010/08/eclipse-java-6u21
查看英文原文:Eclipse and Java 6u21 problems
http://www.infoq.com/news/2010/07/eclipse-java-6u21
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.194.176.157
推
08/02 10:59, , 1F
08/02 10:59, 1F
→
08/02 13:40, , 2F
08/02 13:40, 2F
Eclipse 近期熱門文章
PTT數位生活區 即時熱門文章