Eclipseの補完でエラーになったときの対応方法

# 事象 : Problem During Content Assist
- 環境
    - Windows 10 Pro 64bit バージョン1909
    - Payara Server 5.194
    - Eclipse Version 2020-03
    - openjdk version 11

ある日、Javaコードを書き始めたらダイアログが現れた。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/26ee966a-afa5-15b2-8e6a-fcc8e8e32fb2.png)
![image (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/eb822750-7e97-fab7-4e17-bbca58d203da.png)

```text:エラーメッセージ
The 'org.eclipse.jdt.ui.org.eclipse.jdt.ui.javaCompletionProposalComputer.chain' proposal computer from the 'org.eclipse.jdt.ui' plug-in did not complete normally. The extension has thrown a runtime exception.
To avoid this message, disable the 'org.eclipse.jdt.ui' plug in or disable the 'Chain Template Proposals' category on the content assist preference page.
```


## 原因 : 不明
この辺が原因かもしれないけれど古いバグだから違うかもしれない

> We currently flag a processor that takes longer than 5s as unacceptable for a user since content assist is a typing assistant. Note that we do not disable the processor, we leave that up to the user i.e. if it happens often he can disable it. 
> [141457 &ndash; Time out error message when doing content assist](https://bugs.eclipse.org/bugs/show_bug.cgi?id=141457)

### 対応 : Javaの入力補完のタイムアウト時間を伸ばすようにeclipse.iniに設定する
- 参考 : [Eclipse Java Content Assist not working - Stack Overflow](https://stackoverflow.com/questions/1367306/eclipse-java-content-assist-not-working/10997241)

```ini:eclipse.ini
; ...省略...
-vmargs
-Dosgi.requiredJavaVersion=1.11
-Xms4096m
-Xmx4096m
; ↓↓↓↓↓↓-vmargsにここを追記する↓↓↓↓↓↓↓↓↓
-Dorg.eclipse.jdt.ui.codeAssistTimeout=60000
```
- 数日後にまたエラーが・・・
    - デバック中にコードを書いていたらまたエラーが・・・デバックを止めて他のアプリをいくつか落としたらエラーが出なくなった・・・
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/95907a52-06e0-1ec9-8df0-c1a14fb175a5.png)

### 他の対応
今回はやらなかったけどいつかのために・・・eclipse.iniの`-Xmx`の値を大きくして使えるメモリを増やす対応もあるらしい。

- [java - Eclipseネオン - コンテンツアシストタイミングアウト](https://stackoverrun.com/ja/q/11066194)
- [about billson: Seems resolved: Code Assists exception, org.eclipse.recommenders.completion.rc](https://billson.blogspot.com/2019/04/code-assists-exception.html)





# 事象 : 保存パーティシパントで問題が発生しました。
- 環境
    - Windows10 Pro 64bit
    - Eclipse Version: Oxygen.3a Release (4.7.3a)
    - Java 1.7
    - Lombok Version : 1.16.18

EclipseでJavaのソースを保存したら怒られた

```text:ダイアログメッセージ
保存パーティシパントで問題が発生しました。
  保存パーティシパント 'コード・クリーンアップ' で例外発生: java.lang.IndexOutOfBoundsException: Index: 87, Size: 87. 詳細はエラー・ログを参照してください。
```

```bash:{ワークスペースのディレクトリ}/.metadata/.log
!ENTRY org.eclipse.jdt.ui 4 10006 2019-10-25 13:18:27.511
!MESSAGE The save participant 'org.eclipse.jdt.ui.postsavelistener.cleanup' caused an exception: java.lang.ArrayIndexOutOfBoundsException: -1
!STACK 0
java.lang.ArrayIndexOutOfBoundsException: -1
    at java.util.ArrayList.elementData(Unknown Source)
    at java.util.ArrayList.get(Unknown Source)
    at org.eclipse.jdt.internal.formatter.TokenManager.get(TokenManager.java:73)
    at org.eclipse.jdt.internal.formatter.TokenManager.findIndex(TokenManager.java:166)
    at org.eclipse.jdt.internal.formatter.TokenManager.lastIndexIn(TokenManager.java:203)
    at org.eclipse.jdt.internal.formatter.LineBreaksPreparator.handleBracedCode(LineBreaksPreparator.java:710)
    at org.eclipse.jdt.internal.formatter.LineBreaksPreparator.visit(LineBreaksPreparator.java:275)
...省略...
```

## 原因 : Lombokを使っている & 保管アクションを「編集した行をフォーマット」に設定しているから
参考 : [Working with lombok and eclipse cleanup fails: &quot;A save participant caused problems.](https://github.com/rzwitserloot/lombok/issues/879)

- エラー時の設定は、[設定] > [Java] > [エディター] > [保管アクション]で以下
    - 「保存時に選択したアクションを実行」: ON
    - 「ソース・コードのフォーマット」: ON
    - 「編集した行をフォーマット」: ON

### 対応 : 保管アクションを「すべての行をフォーマット」に設定する