torutkのブログ

ソフトウェア・エンジニアのブログ

JDK 9 EA上でNetBeans IDE JDK9 Branchを動かす(未だ動かない)

その後動いたのでこちらも参照ください。
JDK 9 EA上でNetBeans IDE 開発版を動かす(動いた) - torutkの日記


NetBeansのダウンロードページには、"JDK9 Branch"としてJDK9対応の開発スナップショットが公開されています。
このNetBeansを、JDK 9 Early Access版上で動かす試みを実施しました。
なお、Windows 10 64bit環境です。

jdk-9 b128 64bitをインストールし、NetBeans IDE Dev 201607210404(JDK9 Branch)をインストールしました。NetBeans IDEのインストール時に使用するJavaVMにjdk-9を指定しました。

HiDPI環境(2560x1440)で、「テキスト、アプリ、その他の項目のサイズを変更する」が150%に設定されている環境でNetBeansのショートカットを実行しました。

今までは、非常に小さなキャプション画面と小さな文字で表示されていました(「テキスト、アプリ、その他の項目のサイズを変更する」の設定が反映されない)。そのため、NetBeans IDEのオプションでフォントサイズを20ピクセル程度にして文字を他のアプリと同程度にしていました。

JDK 9上で動かすNetBeans IDEは、キャプション画面も文字も大きく表示されました。
これは、JDK 9でWindows OS上でのHiDPI対応が取り入れられたからと思います。

JEP 263: HiDPI Graphics on Windows and Linux

ところが、[ファイル]メニュー > [新規プロジェクト] など別画面を表示する操作を実施すると、例外が発生します。

java.lang.ClassNotFoundException: javax.activation.DataContentHandlerFactory

これは、NetBeansのバグとして登録されていました。

Bug 258945 – ClassNotFoundException: javax.activation.DataContentHandlerFactory

試行

NetBeans のサイトに、JDK 9上で動かすときのオプション指定例が記載されています。
http://wiki.netbeans.org/JDK9Support

ページ末尾の方の"Running NetBeans on JDK9 EA as run time Java platform"になります。
Windowsの場合、次のように記述されています。

bin\netbeans.exe --jdkhome "C:\Program Files\Java\jdk-9" -J-Djdk.launcher.addexports.0=java.desktop/sun.awt=ALL-UNNAMED -J-Djdk.launcher.addexports.1=java.base/jdk.internal.jrtfs=ALL-UNNAMED -J-
Djdk.launcher.addexports.2=java.desktop/java.awt.peer=ALL-UNNAMED -J-Djdk.launcher.addexports.3=java.desktop/com.sun.beans.editors=ALL-UNNAMED -J-Djdk.launcher.addexports.4=java.desktop/sun.awt.im=ALL-UNNAMED -J-
Djdk.launcher.addexports.5=java.desktop/com.sun.java.swing.plaf.windows=ALL-UNNAMED -J-addmods -Jjava.activation,java.corba

この設定をバッチファイルに記述し実行してみましたが、新しい画面を表示する操作は先の例外を吐いてしまいました。

試行2

Bug 258945 – ClassNotFoundException: javax.activation.DataContentHandlerFactory
このNetBeans のバグ登録のコメントにある情報でオプションを追加してみました。

試行2のオプションの最後の"-J-addmods"以降を次のように修正しました。

  • J-addmods -Jjava.activation,java.corba,java.se.ee

が、ダメでした。

  • J-addmods -JALL-DEFAULT,java.activation,java.corba,java.se.ee
  • J-addmods -JALL-DEFAULT,java.se.ee
  • J"-addmods ALL-DEFAULT,java.se.ee"

と試行錯誤してみましたが、これらもダメでした。