複数の問題が発生しましたとなった時の失敗した対応方法

Eclipseを起動したり、ちょっとなんかしたらエラーダイアログが表示されて「ログ見てね」的なことが書いてあることがよくある。ログを見るとすげーーーエラーが出ていたりする。そんな時のお話。



# 事象 : プラグイン "org.eclipse.jface" からのコードの起動で問題が発生しました。
- 環境
    - macOS Big Surバージョン 11.1
    - Eclipse IDE for Enterprise Java Developers Version: 2020-12 M1

[Spring Initializr - spring.io](https://start.spring.io/)でSpringプロジェクトをダウンロードして、
Eclipseでインポートして、
サンプルのJavaファイルを開こうとしたらなんか言われた。

```text:ダイアログのメッセージ
エラー発生。詳細については、エラー・ログを参照してください。
Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @39159b14
```

<details><summary>Eclipseの.log</summary><div>

```bash
!ENTRY org.eclipse.jface 4 2 2021-02-16 19:18:05.363
!MESSAGE プラグイン "org.eclipse.jface" からのコードの起動で問題が発生しました。
!STACK 0
java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @46d51d5e
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:340)
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:280)
	at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:198)
	at java.base/java.lang.reflect.Method.setAccessible(Method.java:192)
	at org.eclipse.osgi.internal.loader.ModuleClassLoader.overrideLoadResult(ModuleClassLoader.java:86)
...省略...
```

</div></details>

## 原因 : eclipse.iniに--illegal-access=denyがあるから
eclipse.iniをEclipseを取得したときにとっておいた`eclipse.ini.origin`と入れ替えたところエラーにならなくなった。
少しずつコメントアウトして実験したところ`--illegal-access=deny`をコメントアウトするとエラーにならないことがわかった。

```ini
#...省略...
-vm
../Eclipse/plugins/org.eclipse.justj.openjdk.hotspot.jre.full.macosx.x86_64_15.0.1.v20201027-0507/jre/lib/libjli.dylib
-vmargs
--illegal-access=deny # <<< ここを消すとうまくいく
-Xverify:none
-javaagent:../Eclipse/dropins/MergeDoc/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
-javaagent:lombok.jar
#...省略...
```

[以前、ワーニングをみなかったことにするために設定したなぁ。](https://qiita.com/ponsuke0531/items/8391605de69c3bb2e2e3#%E4%BA%8B%E8%B1%A1--an-illegal-reflective-access-operation-has-occurred)

### 対応 : --illegal-access=denyを削除する
なんでこの設定が関係あるのかいまいち納得できない。が、とりあえずエラーが消えてJavaのファイルがJavaエディターで開けるようになる。

- 失敗した対応集
    - クリーンで再起動する・・・だけで治ることもあるらしいがだめだった。
    - [ヘルプ] > [更新の確認] > 全部インストール > メッセージ促されて再起動・・・しないのでクリーン起動 > いけた！と思ったけどやっぱだめだった。













# 事象 : プラグイン "org.eclipse.jdt.core" からのコードの起動で問題が発生しました。
- 環境
    - Windows10 Pro 64bit
    - Eclipse Version: Oxygen.3a Release (4.7.3a)

<details><summary>Eclipseの.log</summary><div>

```log
!ENTRY org.eclipse.jdt.core 4 2 2019-11-18 10:21:05.744
!MESSAGE プラグイン "org.eclipse.jdt.core" からのコードの起動で問題が発生しました。
!STACK 0
java.lang.NullPointerException
    at org.eclipse.glassfish.tools.internal.SystemLibrariesSetting.getSourcePath(SystemLibrariesSetting.java:109)
    at org.eclipse.glassfish.tools.GlassFishInstall.classpath(GlassFishInstall.java:415)
    at org.eclipse.glassfish.tools.internal.SystemLibrariesContainer.<init>(SystemLibrariesContainer.java:75)
    at org.eclipse.glassfish.tools.internal.SystemLibrariesContainer.<init>(SystemLibrariesContainer.java:72)
    at org.eclipse.glassfish.tools.internal.SystemLibrariesContainer$Initializer.initialize(SystemLibrariesContainer.java:195)
    at org.eclipse.jdt.internal.core.JavaModelManager.initializeContainer(JavaModelManager.java:3114)
    at org.eclipse.jdt.internal.core.JavaModelManager.getClasspathContainer(JavaModelManager.java:2063)
...省略...
```
</div></details>

## 原因 : 検索用のインデックスが壊れたから
参考 : [Eclipse：参照検索が効かなくなった | GWT Center](https://www.gwtcenter.com/eclipse-cant-search-reference)

> 色々調べたのですが、検索で使用するインデックスが壊れた時にこの現象が発生するらしいです。なので、壊れたインデックスを削除してやれば回復するそうです。
> [社内SEの徒然なる日記 Eclipseで「Java検索中に問題が発生しました」に対応してみた](http://harikofu.blog.fc2.com/blog-entry-537.html)

### 対応 : org.eclipse.jdt.coreディレクトリを削除する
1. `{ワークスペースディレクトリ}/.metadata/org.eclipse.jdt.core`ディレクトリを削除
1. Eclipseをクリーンで再起動する(`eclipse.exe -clean.cmd`)








# 事象 : キーバインドの競合が発生しました。 通常のアクセラレーター操作を妨げる可能性があります。
- 環境
    - Windows10 Pro 64bit
    - Eclipse Version: Oxygen.3a Release (4.7.3a)

<details><summary>Eclipseの.log</summary><div>

```log
!ENTRY org.eclipse.jface 2 0 2019-11-18 10:20:55.424
!MESSAGE キーバインドの競合が発生しました。 通常のアクセラレーター操作を妨げる可能性があります。
!SUBENTRY 1 org.eclipse.jface 2 0 2019-11-18 10:20:55.425
!MESSAGE ALT+CTRL+Y の競合が発生しました:
Binding(ALT+CTRL+Y,
    ParameterizedCommand(Command(org.eclipse.swtbot.generator.client.commands.import.code,SWTBot コードのインポート,
        Imports code to editor and removes it from the client recorder view,
        Category(org.eclipse.core.commands.categories.autogenerated,カテゴリーなし,自動生成コマンドかカテゴリーを持たないコマンド,true),
        org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@7896e96a,
        ,,true),null),
    org.eclipse.ui.defaultAcceleratorConfiguration,
    org.eclipse.ui.contexts.window,,,system)
Binding(ALT+CTRL+Y,
    ParameterizedCommand(Command(org.eclipse.team.svn.revision.graph.command.ShowRevisionGraphCommand,改訂グラフの表示...,
        ,
        Category(org.eclipse.team.svn.ui.command.category,SVN,null,true),
        org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@4e451f9a,
        ,,true),null),
    org.eclipse.ui.defaultAcceleratorConfiguration,
    org.eclipse.ui.contexts.window,,,system)
```
</div></details>

## 原因 : ショートカットキーがバッティングしている
### 対応 : キーバインドの競合を解消する

1. [設定] > [一般] > [キー]で「ctrl+alt+y」を検索
1. [競合]に表示されているいずれかの[バインディング]を消すか変更する
1. Eclipseをクリーンで再起動する(`eclipse.exe -clean.cmd`)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/86064498-454b-19bf-c25f-6d1c5c0407fe.png)














# 事象 : 複数の問題が発生しました

- 環境
    - Windows10 Pro 64bit
    - Eclipse Version: Oxygen.3a Release (4.7.3a)
    - (プロジェクト用)Java 1.7.0.79
    - (Eclipse用)Java 1.8.0.231
    - GlassFish 4.1

月曜日の朝にEclipseを起動したらこうなっていました・・・金曜日は何もなかったのに・・・
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/eeeac34d-86cf-e27f-c986-3635f8725f8b.png)
<details><summary>Eclipseの.log</summary><div>

```log:Eclipseのログ
!SESSION 2019-11-18 10:20:40.209 -----------------------------------------------
eclipse.buildId=4.7.3.M20180330-0640
java.version=1.8.0_231
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=ja_JP
Framework arguments:  -product org.eclipse.epp.package.jee.product
Command-line arguments:  -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product

!ENTRY org.eclipse.jdt.core 4 4 2019-11-18 10:21:05.749
!MESSAGE Java 要素変更通知のリスナーで例外が発生しました
!STACK 0
java.lang.NullPointerException
    at org.eclipse.glassfish.tools.internal.SystemLibrariesSetting.getSourcePath(SystemLibrariesSetting.java:109)
    at org.eclipse.glassfish.tools.GlassFishInstall.classpath(GlassFishInstall.java:415)
    at org.eclipse.glassfish.tools.internal.SystemLibrariesContainer.<init>(SystemLibrariesContainer.java:75)
    at org.eclipse.glassfish.tools.internal.SystemLibrariesContainer.<init>(SystemLibrariesContainer.java:72)
    at org.eclipse.glassfish.tools.internal.SystemLibrariesContainer$Initializer.initialize(SystemLibrariesContainer.java:195)
    at org.eclipse.jdt.internal.core.JavaModelManager.initializeContainer(JavaModelManager.java:3114)
...省略...

!ENTRY org.eclipse.jdt.core 4 4 2019-11-18 10:21:07.407
!MESSAGE Exception occurred during problem detection:
----------------------------------- SOURCE BEGIN -------------------------------------
...省略...
----------------------------------- SOURCE END -------------------------------------
!STACK 0
java.lang.NullPointerException
    at org.eclipse.glassfish.tools.internal.SystemLibrariesSetting.getSourcePath(SystemLibrariesSetting.java:109)
    at org.eclipse.glassfish.tools.GlassFishInstall.classpath(GlassFishInstall.java:415)
    at org.eclipse.glassfish.tools.internal.SystemLibrariesContainer.<init>(SystemLibrariesContainer.java:75)
    at org.eclipse.glassfish.tools.internal.SystemLibrariesContainer.<init>(SystemLibrariesContainer.java:72)
    at org.eclipse.glassfish.tools.internal.SystemLibrariesContainer$Initializer.initialize(SystemLibrariesContainer.java:195)
...省略...
!ENTRY org.eclipse.jdt.ui 4 2 2019-11-18 10:21:07.434
!MESSAGE プラグイン "org.eclipse.jdt.ui" からのコードの起動で問題が発生しました。
!STACK 1
Java Model Exception: java.lang.NullPointerException
    at org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:254)
    at org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:276)
...省略...
Caused by: java.lang.NullPointerException
    at org.eclipse.glassfish.tools.internal.SystemLibrariesSetting.getSourcePath(SystemLibrariesSetting.java:109)
    at org.eclipse.glassfish.tools.GlassFishInstall.classpath(GlassFishInstall.java:415)
...省略...
Caused by: java.lang.NullPointerException
    at org.eclipse.glassfish.tools.internal.SystemLibrariesSetting.getSourcePath(SystemLibrariesSetting.java:109)
    at org.eclipse.glassfish.tools.GlassFishInstall.classpath(GlassFishInstall.java:415)
...省略...
!SUBENTRY 1 org.eclipse.jdt.core 4 1005 2019-11-18 10:21:07.454
!MESSAGE java.lang.NullPointerException
!STACK 0
java.lang.NullPointerException
    at org.eclipse.glassfish.tools.internal.SystemLibrariesSetting.getSourcePath(SystemLibrariesSetting.java:109)
    at org.eclipse.glassfish.tools.GlassFishInstall.classpath(GlassFishInstall.java:415)
    at org.eclipse.glassfish.tools.internal.SystemLibrariesContainer.<init>(SystemLibrariesContainer.java:75)
...省略...
!SUBENTRY 1 org.eclipse.jdt.core 4 1005 2019-11-18 10:21:07.455
!MESSAGE java.lang.NullPointerException
!STACK 0
java.lang.NullPointerException
    at org.eclipse.glassfish.tools.internal.SystemLibrariesSetting.getSourcePath(SystemLibrariesSetting.java:109)
    at org.eclipse.glassfish.tools.GlassFishInstall.classpath(GlassFishInstall.java:415)
    at org.eclipse.glassfish.tools.internal.SystemLibrariesContainer.<init>(SystemLibrariesContainer.java:75)
...省略...
!ENTRY org.eclipse.jdt.ui 4 0 2019-11-18 10:21:07.459
!MESSAGE Error in JDT Core during reconcile
!STACK 1
Java Model Exception: java.lang.NullPointerException
    at org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:254)
    at org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:276)
    at org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.makeConsistent(ReconcileWorkingCopyOperation.java:191)
    at org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.executeOperation(ReconcileWorkingCopyOperation.java:90)
    at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:724)
    at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:790)
...省略...
Caused by: java.lang.NullPointerException
    at org.eclipse.glassfish.tools.internal.SystemLibrariesSetting.getSourcePath(SystemLibrariesSetting.java:109)
    at org.eclipse.glassfish.tools.GlassFishInstall.classpath(GlassFishInstall.java:415)
    at org.eclipse.glassfish.tools.internal.SystemLibrariesContainer.<init>(SystemLibrariesContainer.java:75)
...省略...
Caused by: java.lang.NullPointerException
    at org.eclipse.glassfish.tools.internal.SystemLibrariesSetting.getSourcePath(SystemLibrariesSetting.java:109)
    at org.eclipse.glassfish.tools.GlassFishInstall.classpath(GlassFishInstall.java:415)
...省略...
!SUBENTRY 1 org.eclipse.jdt.core 4 1005 2019-11-18 10:21:07.460
!MESSAGE java.lang.NullPointerException
!STACK 0
java.lang.NullPointerException
    at org.eclipse.glassfish.tools.internal.SystemLibrariesSetting.getSourcePath(SystemLibrariesSetting.java:109)
    at org.eclipse.glassfish.tools.GlassFishInstall.classpath(GlassFishInstall.java:415)
    at org.eclipse.glassfish.tools.internal.SystemLibrariesContainer.<init>(SystemLibrariesContainer.java:75)
...省略...
!ENTRY org.eclipse.jdt.ui 4 2 2019-11-18 10:21:09.371
!MESSAGE プラグイン "org.eclipse.jdt.ui" からのコードの起動で問題が発生しました。
!STACK 0
java.lang.NullPointerException
    at org.eclipse.glassfish.tools.internal.SystemLibrariesSetting.getSourcePath(SystemLibrariesSetting.java:109)
    at org.eclipse.glassfish.tools.GlassFishInstall.classpath(GlassFishInstall.java:415)
    at org.eclipse.glassfish.tools.internal.SystemLibrariesContainer.<init>(SystemLibrariesContainer.java:75)
    at org.eclipse.glassfish.tools.internal.SystemLibrariesContainer.<init>(SystemLibrariesContainer.java:72)
    at org.eclipse.glassfish.tools.internal.SystemLibrariesContainer$Initializer.initialize(SystemLibrariesContainer.java:195)
    at org.eclipse.jdt.internal.core.JavaModelManager.initializeContainer(JavaModelManager.java:3114)
...省略...
!ENTRY org.eclipse.jdt.ui 4 0 2019-11-18 10:21:09.381
!MESSAGE AST 作成中に JDT コアでエラー
!STACK 0
java.lang.NullPointerException
    at org.eclipse.glassfish.tools.internal.SystemLibrariesSetting.getSourcePath(SystemLibrariesSetting.java:109)
    at org.eclipse.glassfish.tools.GlassFishInstall.classpath(GlassFishInstall.java:415)
    at org.eclipse.glassfish.tools.internal.SystemLibrariesContainer.<init>(SystemLibrariesContainer.java:75)
    at org.eclipse.glassfish.tools.internal.SystemLibrariesContainer.<init>(SystemLibrariesContainer.java:72)
    at org.eclipse.glassfish.tools.internal.SystemLibrariesContainer$Initializer.initialize(SystemLibrariesContainer.java:195)
    at org.eclipse.jdt.internal.core.JavaModelManager.initializeContainer(JavaModelManager.java:3114)
...省略...
!ENTRY org.eclipse.core.jobs 4 2 2019-11-18 10:21:11.294
!MESSAGE "J2EE Component Mapping Update" 中に内部エラーが発生しました。
!STACK 0
java.lang.NullPointerException
    at org.eclipse.glassfish.tools.internal.SystemLibrariesSetting.getSourcePath(SystemLibrariesSetting.java:109)
    at org.eclipse.glassfish.tools.GlassFishInstall.classpath(GlassFishInstall.java:415)
    at org.eclipse.glassfish.tools.internal.SystemLibrariesContainer.<init>(SystemLibrariesContainer.java:75)
...省略...
!ENTRY org.eclipse.core.jobs 4 2 2019-11-18 10:21:11.821
!MESSAGE "Java ツールを初期化中" 中に内部エラーが発生しました。
!STACK 0
java.lang.NullPointerException
    at org.eclipse.glassfish.tools.internal.SystemLibrariesSetting.getSourcePath(SystemLibrariesSetting.java:109)
    at org.eclipse.glassfish.tools.GlassFishInstall.classpath(GlassFishInstall.java:415)
    at org.eclipse.glassfish.tools.internal.SystemLibrariesContainer.<init>(SystemLibrariesContainer.java:75)
    at org.eclipse.glassfish.tools.internal.SystemLibrariesContainer.<init>(SystemLibrariesContainer.java:72)
    at org.eclipse.glassfish.tools.internal.SystemLibrariesContainer$Initializer.initialize(SystemLibrariesContainer.java:195)
    at org.eclipse.jdt.internal.core.JavaModelManager.initializeContainer(JavaModelManager.java:3114)
...省略...
!ENTRY org.eclipse.core.resources 4 2 2019-11-18 10:21:13.599
!MESSAGE プラグイン "org.eclipse.core.resources" からのコードの起動で問題が発生しました。
!STACK 0
java.lang.NullPointerException
    at org.eclipse.glassfish.tools.internal.SystemLibrariesSetting.getSourcePath(SystemLibrariesSetting.java:109)
    at org.eclipse.glassfish.tools.GlassFishInstall.classpath(GlassFishInstall.java:415)
...省略...
!ENTRY org.eclipse.ui.navigator 4 2 2019-11-18 10:21:13.613
!MESSAGE プラグイン "org.eclipse.ui.navigator" からのコードの起動で問題が発生しました。
!STACK 0
java.lang.NullPointerException
    at org.eclipse.glassfish.tools.internal.SystemLibrariesSetting.getSourcePath(SystemLibrariesSetting.java:109)
    at org.eclipse.glassfish.tools.GlassFishInstall.classpath(GlassFishInstall.java:415)
...省略...
!ENTRY org.eclipse.ui.navigator 4 0 2019-11-18 10:21:13.749
!MESSAGE java.lang.NullPointerException
!STACK 0
java.lang.NullPointerException
    at org.eclipse.glassfish.tools.internal.SystemLibrariesSetting.getSourcePath(SystemLibrariesSetting.java:109)
    at org.eclipse.glassfish.tools.GlassFishInstall.classpath(GlassFishInstall.java:415)
...省略...
!ENTRY org.eclipse.core.jobs 4 2 2019-11-18 10:21:14.381
!MESSAGE "ワークスペースをビルド中" 中に内部エラーが発生しました。
!STACK 0
java.lang.NullPointerException
    at org.eclipse.glassfish.tools.internal.SystemLibrariesSetting.getSourcePath(SystemLibrariesSetting.java:109)
    at org.eclipse.glassfish.tools.GlassFishInstall.classpath(GlassFishInstall.java:415)
...省略...
!ENTRY org.eclipse.epp.logging.aeri.ide 2 17 2019-11-18 10:21:15.362
!MESSAGE Server ‘org.eclipse.epp.logging.aeri.ide.server’ failed with exception: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $. ; バージョン: 2.0.7.v20170906-1327
!STACK 0
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:224)
    at com.google.gson.Gson.fromJson(Gson.java:887)
...省略...
Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
    at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:385)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:213)
    ... 9 more
!ENTRY org.eclipse.ui.workbench 4 2 2019-11-18 10:21:15.418
!MESSAGE プラグイン "org.eclipse.ui.workbench" からのコードの起動で問題が発生しました。
!STACK 0
java.lang.NullPointerException
    at org.eclipse.glassfish.tools.internal.SystemLibrariesSetting.getSourcePath(SystemLibrariesSetting.java:109)
    at org.eclipse.glassfish.tools.GlassFishInstall.classpath(GlassFishInstall.java:415)
...省略...
!ENTRY org.eclipse.ui 4 4 2019-11-18 10:21:15.427
!MESSAGE デコレーター内で例外。'Java ビルド・パス・インジケーター' デコレーターは無効になります。
!SUBENTRY 1 org.eclipse.ui 4 4 2019-11-18 10:21:15.427
!MESSAGE java.lang.NullPointerException
!STACK 0
java.lang.NullPointerException
    at org.eclipse.glassfish.tools.internal.SystemLibrariesSetting.getSourcePath(SystemLibrariesSetting.java:109)
    at org.eclipse.glassfish.tools.GlassFishInstall.classpath(GlassFishInstall.java:415)
...省略...
!ENTRY org.eclipse.core.resources 4 2 2019-11-18 10:21:16.312
!MESSAGE プラグイン "org.eclipse.core.resources" からのコードの起動で問題が発生しました。
!STACK 0
java.lang.NullPointerException
    at org.eclipse.glassfish.tools.internal.SystemLibrariesSetting.getSourcePath(SystemLibrariesSetting.java:109)
    at org.eclipse.glassfish.tools.GlassFishInstall.classpath(GlassFishInstall.java:415)
...省略...
```
</div></details>


## 対応 : 一つ一つ解決する
そりゃそうだ
### GlassFishを削除する
ログにglassfishとやたら出ているので削除してみます。

1. [サーバ]ビューに表示されているGlassFishを削除する
1. Eclipseをクリーンで再起動する(`eclipse.exe -clean.cmd`)

### 諦めた対応 : エラーがなくならなくてイライラするのでプロジェクトをインポートしなおす
根本的な原因と対応策がわからないので作り直すことにしました。
[パッケージ・エクスプローラ]ではプロジェクトを削除しようとするとエラーになって削除できないのでワークスペースディレクトリの中身をエクスプローラで全部削除しました。