BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Eclipse と Java 6u21 の問題

Eclipse と Java 6u21 の問題

原文(投稿日:2010/07/21)へのリンク

Oracleが最近リリースした Java 6 update 21 には、 java.dllを作成する際に、小さな,しかし無害な変更 があった。不幸にも、この変更は、 Eclipseの起動に影響を及ぼし、かつてSunの元で開発された NetBeansではなく、 Eclipseに問題をもたらした。

変更は、dllの作成の際に、COMPANY_NAME=Sun Microsystems, Inc.COMPANY_NAME=Oracle Corporation に置き換えたのである。不幸にも、 Eclipseは、DLLの名前を使って、非標準の-XX:MaxPermSize を追加するのが安全かどうかを判定している。そのフラッグが存在して、サポートされていないと、あるJVMは、Eclipse のスタートアップ ファイル (eclipse.ini)に、-XX:MaxPermSizeを書かないで、起動に失敗するので、新しい引数、 --launcher.XXMaxPermSize 256m が許され、そしてもし、 Windowsで実行可能なランチャーがSunのVMを検知したら、-XX:MaxPermSize=256m を自動的に追加する。

この自動検知は、VMではなく、Cで書かれたランチャー部分(eclipse.exe) で行っている-VMは、一旦走れば、そのプロパティを変更することはできない。これを早い(そして臆せず言えば、汚い)方法でやるために、eclipse.exe ランチャーは、そのフラッグを追加できるか,判断するのに 文字列 Sun Microsystemsを探す。

こうして、この変更が Eclipseランチャーのプロセスを破綻させた;そしてOutOfMemoryErrorを起動時に起こす。これは、即座に 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サイズを再有効化すればよい。

この記事に星をつける

おすすめ度
スタイル

BT