Gephi起動時 "unable to load libjogl_awt.jnilib" 対策

オープンソースのグラフ可視化ツール [Gephi](https://gephi.org) は、その環境にインストールされた Java を使用する。

ただ、少なくとも現在の Mac OS X 版はバージョン 7 系の Java との相性があまりよくないようで、普通に Java SE や SDK のバージョン 7 をインストールしてから Gephi を起動しようとすると、下に示した "unable to load libjogl_awt.jnilib" が表示されて起動できないことがある。

![img.png](https://qiita-image-store.s3.amazonaws.com/0/12779/75431867-cac5-5c46-508e-e2a8737f9cfa.png)

また、このエラーが発生せず Gephi は起動するのだけれど、

- ファイルが開けず終了もできない（強制終了しかない）
- "データ工房" をクリックして表示するとフリーズする

というケースにも遭遇し、実質的には使えませんいう状態。

試行錯誤の結果、gephi.conf ファイル中で jdkhome 変数を定義するとうまくいった（方法1）上記のエラーは発生せず、GUI 操作など通常使用に今のところ何の問題もない。

- 方法 2 のような情報もいただいた。また、あまり積極的には採れないながら（バージョン 7 を他で使いたいケースが多い）方法 3 もなくはないので、末尾に念のため書き残しておきます
- 環境によってどの方法が有効かどうかは要検証ながら、試せた範囲で参考に記しました。いずれにしても、そのうち Gephi 側でバージョン7のJavaを使用しても冒頭のエラーが発生しないよう対処されるだろう（と期待）

----
### 方法 1：gephi.conf で jdkhome を指定

バージョン 7 の Java をインストールすると、たとえば `java -version` では自然に

```bash:
(prompt)$ java -version
java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode)
```
とバージョン 7 が参照される。この設定のままでよく、別途

`/Applications/Gephi.app/Contents/Resources/gephi/etc/gephi.conf`

の位置にある gephi.conf を使用して、Gephi 起動時に参照する JDK を自分で指定する。

Gephi のシックなアプリケーションアイコンを右クリック→ [パッケージ内容を表示] でたどるか、さっさと Finder やターミナル経由で gephi.conf をエディタで開き、

```bash:gephi.conf行10-12付近
# default location of JDK/JRE, can be overridden by using --jdkhome <dir.> switch
# jdkhome=
jdkhome="/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/"
```

のように jdkhome を定義する行のコメントアウトを外し、バージョン 6 系へのパスを指定する。あらかじめ

```bash
ls /System/Library/Frameworks/JavaVM.framework/Versions/
```
として、自分の環境に含まれている Java のバージョン数字を確認しておくと早い。

gephi.conf 保存後 Gephi を起動、[Gephi について] ウィンドウ左下に、参照しているバージョンが表示される：

![img.png](https://qiita-image-store.s3.amazonaws.com/0/12779/8271bf1e-b511-27c4-0929-fcf1ac4dc092.png)

##### ちなみに
当初は（これでバージョン7を参照してくれるのではと期待して）下記のパスを jdkhome に指定していた：

```bash
(prompt)$ /usr/libexec/java_home 
/Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home
```

しかし自分の環境の場合は現象改善せずだった。Gephi 単体というより、OS 上の Java バージョン参照にはそもそもどの設定が効いているのだろう、という点はもやもや（Gephi 起動したのであまり追っていない）

----
### 方法 2：Java 7 残すままの対処法（2013/09/16追記）
[@cielavenir](https://twitter.com/cielavenir/status/379274192035651584) さんよりtwitter経由で情報をいただきました。多発のためかすでに[対処法がいろいろ](https://github.com/gephi/gephi/issues/748#issuecomment-23832762)議論されていました。多謝です

> Resources/gephi/bin/gephi に以下を記述したところ Java 7 を残したまま直せました

```
--jdkhome `/usr/libexec/java_home -v 1.6\*`
```
（いただいた情報は以上）

----
### 方法 3：Java 7 アンインストール

雑多な情報ながら[このやりとり](https://github.com/gephi/gephi/issues/754)が参考になった

- Apple 社提供の Java for OS X（2013/09 時点で最新は 2013-004）をインストールし直す
  - ※ 追記 この時点でバージョン 6 系 Java がインストールされるので、方法1のように jdkhome 指定さえすればバージョン 7 は削除不要かもしれない
  - Apple のサポートサイトを "Java for OS X 2013" などで[検索](http://support.apple.com/kb/index?page=search&product=&q=Java%20for%20OS%20X%202013)すると、その時点での最新版が見つかる
- Java 7 アンインストール
  - [MacでJava 7をアンインストールするにはどうすればよいですか](http://www.java.com/ja/download/help/mac_uninstall_java.xml)
    - 「Javaプラグイン・ファイルJavaAppletPlugin.pluginの削除のみです」
  - JDK をインストールした場合、その少し下に書かれた以下に従って忘れずに削除
    - 「JDK 7がインストールされているシステムでApple Java 6を復元する場合は、まずJDK 7をアンインストールする必要があります。JDK 7のアンインストール手順を参照してください」

（Java for OS X 2013-004の場合）ターミナルでの `java -version` 実行結果が

```bash
java version "1.6.0_51"
Java(TM) SE Runtime Environment (build 1.6.0_51-b11-457-11M4509)
Java HotSpot(TM) 64-Bit Server VM (build 20.51-b01-457, mixed mode)
```

となっていればよい

----
### ちなみに
- gephiへの入り口は日本語情報として[ここ](http://oss.infoscience.co.jp/gephi/gephi.org/index.html)がよくまとまっている
  - クイックスタートを見ると、どう操作すれば何ができるかがだいたいわかります
- 実際どんな活用をされているかは、例えば[YouTube](http://www.youtube.com/results?search_query=gephi)や[slideshare](http://www.slideshare.net/search/slideshow?searchfrom=header&q=gephi)を検索すると雰囲気がつかめる。グラフの動きを意識した例は、やはり前者に多く上がっている気がする