18
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Android StudioでJavaのversionで躓いたのでまとめる

Last updated at Posted at 2020-01-23

はじめに

ここ数ヶ月、実務インターンをするようになってから、インターン先が変わるたびに環境構築をしているのですが、適当にやっているせいでJDKのバージョンが原因なエラーに幾度となく躓いてきました。

毎回調べて、

ああ...JDKのversionが原因か。で、どうするんだっけ。と調べるのが不毛なため備忘録として記事にしました。

この記事は自分のユースケースにおける対処法なため、他の方には当てはまらないかもしれませんが、随時updateしていければと思います。

躓いた具体的なユースケース

まず、

java -vesion

とターミナルで打つと、ご自身のJDKのバージョンがいくつか確認できるのでご参考までに。

How to resolve java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException

この時の自分のJDKは

java 12.0.2 2019-07-16

でした。

Java 9で「モジュール」の機能が追加された際に、標準ライブラリからいくつかのモジュールが非推奨となりました。

Java 9以降でJAXBを使用するには、外部JARが必要 #49

この機能追加により、 JAXB なるモジュールも非推奨となり、上記のエラーが出るようになったみたいです。Java 8以下では再現せず、Java 9以上の環境で再現するとのこと。

解決策

Java 9, 10であれば、実行時のオプションで

--add-modules java.xml.bind

を指定してあげれば一旦は凌げます。

毎回オプションを追加するのが面倒臭いとか、そもそもJava 10より上のJDK環境の場合は以下の強引な解決策を試してみてください。

強引な解決策

Android StudioのJDKを使用する

まず、知っておくべきことが

Android Studioは、Javaの実行環境そのものを提供してくれています。

そのため、Android Studioがapkを作る時に使っているJavaのPathのメモ の記事でも言及されているように、普段我々がGUIでAndroid StudioでRunした際には、 Android StudioのJava環境でapplication moduleをビルドし、apkを作成しています。

逆に、

Android Studioの下部のTerrminalや、MacやWindowsのアプリケーションとして開いているターミナルでは、OSの実行環境が使用されます。

したがって、GUIではちゃんとビルドできるのに、

./gradlew assemble

等のコマンドでビルドしようとすると失敗するのはそのせいです。

GUIでビルドができるなら、Android Studioの実行環境でTerminalも動かしてしまえば良いということで、

.bashrc.zshrc に環境変数のPathを通してあげればよさそうです。

export PATH=$PATH:/Applications/"Android Studio.app"/Contents/jre/jdk/Contents/Home/bin
export JAVA_HOME=/Applications/"Android Studio.app"/Contents/jre/jdk/Contents/Home

すると、Android Studioのバージョンにもよりますが、適切なJavaのバージョンでの実行環境でTerminalからも起動できるようになります。

ちなみにAndroid Studio 3.6-RC1では 1.8.0_212-release でした。

異なるversionのJDKをダウンロードする

異なるversionといえども上記のAndroid Studioの実行環境から、 1.8.0 系が良さそうです。Java 8ですね。

Oracle社HP からinstallします。

installの手順は沢山記事があるのでそちらを参考願います。

最近からサインインが必要になったためOracleのアカウントを作らないと行けなかったはずです。

また、表示名が Java SE Development Kit 8u241 みたいな形で、 8u*** となっているかもしれませんが、それが1.8.0 系です。

installができたら、自分がインストールしたJDKのバージョン一覧をみてみましょう。

/usr/libexec/java_home -V

確認できたら、そのJDK versionを環境変数に設定します。

export JAVA_HOME=`/usr/libexec/java_home -v {java_version}

{java_version} には先ほど確認したversionを入れましょう。

あとは無事設定できてるかを

java -version

で確認して、ちゃんと設定できていたらOKです。

参考文献

https://qiita.com/mas0061/items/2fe9333f045800d00b5c

https://qiita.com/kkkkan/items/f9595107a2a9153d1c60

https://github.com/acroquest/javabook-support/issues/49

18
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?