appiumでのJAVA_HOMEのパス

MacでAppiumを利用しAndroidのautomationを試している時に遭遇した出来事。

症状としては、start_driver時にappiumのコンソール上で以下のようなエラーが表示され、テストが開始できませんでした。

[MJSONWP] Encountered internal error running command: Error: Command ‘java -version’ exited with code 20
at ChildProcess. (lib/teen_process.js:65:19)
at emitTwo (events.js:100:13)
at ChildProcess.emit (events.js:185:7)
at maybeClose (internal/child_process.js:850:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:215:5)

どうやら

java -version

を実行した際にエラーが出ているようなので、同じコマンドをコンソールで実行することに。

$ java -version
Unable to locate an executable at “/usr/libexec/java_home/bin/java” (-1)

うーんエラーが帰ってきますね。
そこで環境変数を見直すことに。以下のようにJAVA_HOMEの設定を新しいものに書き換えました。

古:export JAVA_HOME=’/usr/libexec/java_home’
新:export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home

export JAVA_HOME=’/usr/libexec/java_home’

をパスに追加した場合でも

$appium-doctor

を実行すると全て成功で帰ってきてしまいます。が、実際には動いていないということになりますね。appium-doctorの結果を信じていたので、問題解決までに非常に時間がかかりました。

環境変数を変更したあとはうまくバージョン情報も返ってきます。

$ java -version
java version “1.7.0_79”
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

appiumのコンソールのほうも無事にstart_driverのコードを通過することができました。

MacOSのターミナルでコマンドがほとんど使えなくなってしまった

Mac初心者なわけですが、ターミナル上で環境変数を設定しようと ~/.bash_profileを編集していました。
編集後 source ~/.bash_profileを実行し、反映したつもりだったのですがsyntaxを間違えていたのか原因は不明ですが環境変数の設定が飛んでしまいました。

vi, lsなど重要なコマンドが一気に使えなくなり、正直焦りました。Finderも隠しファイルを表示するように設定していなかったため、Visual Studio Codeなどのテキストエディタからbash_profileを開くこともできず…正直詰んだと思いました。

パニックになりながらもウェブを色々探して解決方法を見つけたのでメモしておきます。

cdコマンドは使えるのでターミナルを開いてrootへ移動します。そして以下のコマンドでディクトリを移動しviでbash_profileを新規作成
$ cd usr/bin
$ vi ~/.bash_profile
一行目に
export PATH=”$PATH:/bin:/usr/bin:/usr/local/bin”
をコピーして保存後、ターミナルを再起動。

無事にlsなどのコマンドが動くようになりました。落ち着けば大したことないのですが、焦りました。また、今までのbash_profileの情報はどこかに行ってしまいました。