Java11以上でEclipse-Oxygenが起動しない



昨年リリースのEclipse Oxygenが起動しない。

起動可能
* AdptOpenJDK8
* OpenJDK 10
* Oracle JDK 10

起動不可能
* AdaptOpenJDK11, 12
* Oracle JDK 12

Eclipseバージョンは、Oxygen.3a Release (4.7.3a)

現象

workspace/.metadata/.logを見てみると。。。

AdaptOpenJDK11

eclipse.buildId=4.7.3.M20180330-0640
java.version=11.0.3
java.vendor=AdoptOpenJDK
....
org.eclipse.e4.core.di.InjectionException: java.lang.NoClassDefFoundError: javax/annotation/PostConstruct
.....
!ENTRY org.eclipse.e4.ui.workbench 4 0 2019-07-01 12:22:13.812
!MESSAGE FrameworkEvent ERROR
!STACK 0
java.lang.NoClassDefFoundError: javax/annotation/PreDestroy
    at org.eclipse.e4.core.internal.di.InjectorImpl.disposed(InjectorImpl.java:450)

AdaptOpenJDK12

eclipse.buildId=4.7.3.M20180330-0640
java.version=12.0.1
java.vendor=AdoptOpenJDK
....
org.eclipse.e4.core.di.InjectionException: java.lang.NoClassDefFoundError: javax/annotation/PostConstruct
    at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:410)
....
!ENTRY org.eclipse.e4.ui.workbench 4 0 2019-07-01 12:14:27.319
!MESSAGE FrameworkEvent ERROR
!STACK 0
java.lang.NoClassDefFoundError: javax/annotation/PreDestroy
    at org.eclipse.e4.core.internal.di.InjectorImpl.disposed(InjectorImpl.java:450)

全く同じエラーになっている。

解決策の議論

Eclipse can not be startedに議論がある。Java9で発生するとある。

Configure Eclipse for Java 9 modulesという解決策がある。

しかし、これらの対策は施してあり、しかも今回発生しているのはJava11以上だ。Java10までは問題無いのだ。そして,後者のリンクによれば、Oxygen 4.7.1a以上ではこの問題は解決されているという。使用しているのは4.7.3だ。

Eclipse 4.9でもサポートされていなかった

※ちなみに、知らなかったのだが、Eclipseはバージョンに名称をつけるのをやめてしまったようだ。つまり、4.7はOxygen、4.8はPhotonだが、それ以降は、4.9、4.10と単純にバージョン番号のみになっている。

バージョンアップすればいいじゃないかと言うかもしれないが、、以前にPhoton(4.8)を試してみた時に日本語関連の不具合があったのでやめた(現在は修正されているかも)。しかし、結局Oxygen(4.7)ではJava11以上は無理のようだ。

例えば以下がある。

これによれば、4.9もJava11には対応しておらず、拡張をインストールしなければならなかったようだ。しかし、4.10以上ではJava11に対応しているという。

結論

他の不具合が起ころうが、最新版を入れるしかない。

Oxygenで使っていたワークスペースを読み込ませると、以下のような警告が出るのだが、仕方がない。