JDKを8から11にバージョンアップした
- Oracle JDK8をアンインストール
- OpenJDK11をインストール(環境変数PATHにbinフォルダを設定)
- OpenJDK8をインストール(環境変数PATHには含めない)
そして今までのeclipseを起動したらエラーが出た。
workspace.metadata.log
org.eclipse.e4.core.di.InjectionException: java.lang.NoClassDefFoundError: javax/annotation/PostConstruct
at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:410)
at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:318)
at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:162)
JDK11に対応していないことが原因なので、JDK8で動かす必要がある。
でも新しいeclipseはJDK11で動かしたいので、環境変数PATHは変えたくない。
eclipse起動に使うjavaw.exeを指定する
通常はPATHが通っているjavaw.exeが使われる。
eclipse毎に明示的に使用するjavaw.exeを指定すればよい。
eclipse.exe と同じ場所にある eclipse.ini に追記することで明示的に指定する。
- eclipseが起動している場合は落とす
- eclipse.ini をテキストエディタで開く
- -vmargs の前の行に次のような -vm の2行を追記する
eclipse.ini
:
-vm
C:\(JDK8のパス)\bin\javaw.exe
-vmargs
:
eclipseを起動
正常に起動した(^o^)
Spring Tool Suiteなど、eclipseベースのツールであれば、iniファイル名が異なるだけで同じ対応で解決します。