Anypoint StudioでDerbyに接続する時にデータベースコンフィグで躓いた話

# 最初に
Mulesoftのトレーニングでは、テストデータがプリセットされたデータベースにDerbyを利用しています。トレーニングでは順を追って解説されているため、一つ一つ動作するように設定する必要があり、適当にマニュアルを読みながら『ささっ』と設定すると、ドツボにはまってしまうというお話です。（当たり前ですね！！）
いくつか初心者には躓くポイントがあり、備忘録のために共有します。

# 躓くポイント
 1. DerbyのJDBCドライバを設定する場合はバージョンに注意！！（最新はダメ)
 2. 接続テスト実行時の依存エラーは依存ライブラリにDerbyを追加！！

# 内容
ポイント２つについて、説明してきいきます。

## DerbyのJDBCドライバを設定する場合はバージョンに注意！！（最新はダメ)

よく読まずに、最新バージョンの『10.15.1.3』を設定すると『JDBCドライバがありません！』と怒られます。
一つ下の、『10.14.2.0』を指定する必要があります。

<img width="903" alt="スクリーンショット 2019-11-01 14.16.38.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/76270/364a6dc6-ab27-9e8f-75a2-e2ccd0bb57c7.png">

MuleプロジェクトのプロジェクトライブラリフォルダのJARの中身を確認しても、『org.apache.derby.jdbc』というパッケージがなく、『org.apache.derby.jdbc.ClientDriver』がありませんでした。
Derbyについてあまり詳しくないですが、マニュフェストで定義されているドライバーらしきクラスを指定しても、クラスローダでロードできないエラーが発生します。（いつもならここで諦めます。）
一旦落ち着いて、一つ下のバージョンの『10.14.2.0』を指定してすると、指定のJDBCドライバ名がロードできるようになりました。

## 接続テスト実行時の依存エラーは依存ライブラリにDerbyを追加！！

接続テスト実行時に、下記の依存エラーが発生しました。

<img width="537" alt="スクリーンショット 2019-11-01 13.46.44.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/76270/cca7bf09-9e04-8743-0dd0-a78928621b3a.png">


```
  org.mule.tooling.client.api.exception.ToolingException: Error while creating application from url: file:/Users/kawaguchimakototakeshi/Documents/workspace_as/.tooling/training4-american-wsd80d0166-0a3b-4d3f-a388-9520a8e9afb1/
  org.mule.runtime.api.exception.MuleRuntimeException: Dependency org.apache.derby:derby could not be found within the artifact training4-american-wsd80d0166-0a3b-4d3f-a388-9520a8e9afb1. It must be declared within the maven dependencies of the artifact.
  	at org.mule.tooling.client.internal.DefaultToolingRuntimeClient.newToolingArtifact(DefaultToolingRuntimeClient.java:193)
  	at org.mule.tooling.client.internal.DefaultToolingRuntimeClient.invokeMethod(DefaultToolingRuntimeClient.java:458)
  	at sun.reflect.GeneratedMethodAccessor350.invoke(Unknown Source)
  	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  	at java.lang.reflect.Method.invoke(Method.java:498)
  	at org.mule.tooling.client.bootstrap.internal.reflection.Dispatcher$ToolingCallable.call(Dispatcher.java:232)
  	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
  	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
  	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
  	at java.lang.Thread.run(Thread.java:748)
```

エラー内容から『Dependency org.apache.derby:derby』と記載されているので、MuleプロジェクトのPom.xmlの依存ライブラリの『DerbyClient』の上に下記の依存ライブラリを追加すると解消されます。

<img width="359" alt="スクリーンショット 2019-11-01 13.59.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/76270/cdca104b-7b57-208d-48ad-a88257989e68.png">


```
<dependency>
    <groupId>org.apache.derby</groupId>
    <artifactId>derby</artifactId>
    <version>10.14.2.0</version>
</dependency>
```

<img width="628" alt="スクリーンショット 2019-11-01 13.58.49.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/76270/8fd9fa18-ce4d-1749-3c3f-78a15968e4d8.png">


# まとめ
普通ならば、すぐに諦めるところですが、、、資格試験を受けなければいけないこともあり、『グッ！！』と我慢しました。
Anypoint Studioを利用したMuleアプリケーション開発では、たびたびJava開発で見かけるエラーが発生するので、MavenのJavaアプリケーションとしてエラーの切り分けを考えた方が良さそうです。。
次から『スッ』と解決できれば楽ですねーでは。