【解決】UpgradeしたらAndroid Studio 2021.2.1(Chipmunk)が起動しない

# 概要
Android Studio 2021.2.1(Chipmunk)がリリースされたので、Android Studio 2021.1.1（Bumblebee）を起動するとUpgradeの案内が表示されて承認するとUpgradeが始まります。

多くの人は、Android StudioをPleiades（https://mergedoc.osdn.jp/ ）の日本語化をしていると勝手に思っていますが、今回、ChipmunkにUpgradeするとエラーで起動しなくな ~~ります。（私だけかもしれませんが）~~ ることがあります。

今回は、その復旧（あくまで起動するまで）をする手順~~です。~~ と解消方法の説明です。
再インストールしても解消しないので、めげないで読んでください。

<font color="Red">【Update2022.05.15】
日本語化するためのPleiades日本語化の**バージョン**が、本件に関連してます。
なので、古いバージョンを使うことで回避できるようになります。</font>
<font color="Red">
詳細は、最下端へ記載してます。
</font>


# 前提
* Windows10
* Android Studio Bumblebee（2021.1.1）
* Pleiades日本語化（Ver pleiades-2022.05.05）

# 症状の整理
まずは、Upgrade後の初回起動をすると、下記のようなダイアログが表示されます。
そして、「OK」を押してもAndroid Studioが起動することはありません。
```
Error launching Studio

 Could not find main class com/intellij/idea/Main

```


![as001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/c388b610-6174-77b8-8043-eb5c2d0f925b.png)

「あ～、また日本語化している状態でAndroid StudioのUpgradeしたときと同じで、再度日本語化を実行しないといけないパターンかな？」
と思っていたのですが、、、、

https://qiita.com/TAKANEKOMACHI/items/af639d0552a6509cc45c

今回は違ってました。

まず、再度Pleiades日本語化を実行しても**起動しない**。症状は同じまま。
エラー内容をググると「Android Studioを入れなおせ」と言われるのだが、そこまで重症な気がしない、、、、

# 解消方法（暫定）
最終的な解消方法は、後日アップデートをしないといけないとは思いますが、今は「日本語を一旦オフにする」ことで解消させます。
（つまり、原因としては日本語化にありそうだ。ということ）

まずは、Pleiades日本語化を起動します。
![as003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/bca12862-626d-7226-5907-ede561568018.png)

最終行の「Pleiadesの設定が追加されるファイル」のパスを確認して、「studio64.exe.vmoptions」ファイルをエディタで開きます。

```
 # Custom VM options (Generated by Pleiades Installer)
 # See https://pleiades.io/pages/pleiades_jetbrains_manual.html
 #-Xms256m
 #-Xmx1280m
-XX:ReservedCodeCacheSize=512m
-XX:+UseG1GC
-XX:SoftRefLRUPolicyMSPerMB=50
-XX:CICompilerCount=2
-Dsun.io.useCanonCaches=false
-Djdk.http.auth.tunneling.disabledSchemes=""
-Djdk.attach.allowAttachSelf=true
-Djdk.module.illegalAccess.silent=true
-Dkotlinx.coroutines.debug=off
-Djna.nosys=true
-Djna.boot.library.path=
-Didea.vendor.name=Google
-Dfile.encoding=UTF-8
-XX:+IgnoreUnrecognizedVMOptions
-Xverify:none
-javaagent:C:\Users\XXXX\AppData\Roaming\Google\AndroidStudio2021.2\jp.sourceforge.mergedoc.pleiades\pleiades.jar
```

![as004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/bda9818e-b242-39e2-4cb4-b8585e442b51.png)

「studio64.exe.vmoptions」の最終行にある「-javaagent」の行をコメントアウトすると、Pleiades日本語化をオフにできます。
今回は、この行をコメントアウト（行頭に「#」をつけるだけ）して、日本語化をオフにすることで「暫定対処」します。

```
 # Custom VM options (Generated by Pleiades Installer)
 # See https://pleiades.io/pages/pleiades_jetbrains_manual.html
 #-Xms256m
 #-Xmx1280m
-XX:ReservedCodeCacheSize=512m
-XX:+UseG1GC
-XX:SoftRefLRUPolicyMSPerMB=50
-XX:CICompilerCount=2
-Dsun.io.useCanonCaches=false
-Djdk.http.auth.tunneling.disabledSchemes=""
-Djdk.attach.allowAttachSelf=true
-Djdk.module.illegalAccess.silent=true
-Dkotlinx.coroutines.debug=off
-Djna.nosys=true
-Djna.boot.library.path=
-Didea.vendor.name=Google
-Dfile.encoding=UTF-8
-XX:+IgnoreUnrecognizedVMOptions
-Xverify:none
 #-javaagent:C:\Users\XXXX\AppData\Roaming\Google\AndroidStudio2021.2\jp.sourceforge.mergedoc.pleiades\pleiades.jar
```

Android Studioを起動します。
無事起動しました。（日本語化はオフなので頑張って英語を読みましょう）
![as005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/9b448267-f238-9c24-51bd-c6465d2fa000.png)

# 【追記2022.05.15】調査完了
この症状になるのは、**どうやら全てではないようです**。

<font color="Red">もう1台のPCに入っていたAndroid Studioは、Upgrade後も普通に起動しました。</font>

となると、原因を見つけることが必要になります。
まずは、いろいろ試してみます。

## 設定ファイルを再度作らせてみる

```
C:\Users\(ユーザー名)\AppData\Roaming\Google
```
![as006.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/3cb6593a-b51f-94ce-f717-e64af2fd3309.png)

上記の「AndroidStudio2021.2」フォルダが今回のものになるので、これを一旦、リネームしてAndroidStudioを起動します。
そうすると、前バージョンである「AndroidStudio2021.1」の設定を使って再度作成されます。

結果は、同じくエラーになりました。
これは、前バージョンで日本語化の行がすでに存在しているので、再作成をされても日本語化がオンになっているためです。
ということで、行をコメントアウトすると、やはり正常に起動します。


## 設定を初期化してみる
```
C:\Users\(ユーザー名)\AppData\Roaming\Google
```
このフォルダに存在している「AndroidStudioXXXX」を全て、一旦別の場所に移動します。
（新しいフォルダを作成して、その中に入れてもOK）

そうすると、Android Studioがインストール直後の状態で起動します。

この状態で、日本語化してみます・・・・・・同じエラーになりました。
ぐぬぬぬ・・・

## Pleiadesのログを見る
```
C:\Users\(ユーザー名)\AppData\Roaming\Google\AndroidStudio2021.2\jp.sourceforge.mergedoc.pleiades\cache\pleiades.log
```
日本語化している状態でAndroid Studioを起動すると、上記のLogファイルに起動のログが追記されます。

```
INFO  08:28:21.052 [ForkJoinPool-1-worker-5] (LauncherTransformer) Pleiades AOP 起動トランスフォーマーを開始します。LauncherIdeaTransformer 0.023 秒
INFO  08:28:21.035 [ForkJoinPool-2-worker-5] (LauncherTransformer) キャッシュが存在しないため、強制的に -clean モードで起動します。
INFO  08:28:21.071 [ForkJoinPool-2-worker-19] (UpdateDetector) ファイル更新最終時刻 (前回): 2022-05-15 07:56:47
INFO  08:28:21.075 [ForkJoinPool-2-worker-19] (UpdateDetector) ファイル更新最終時刻 (今回): 2022-05-15 07:56:47
ERROR 08:28:21.077 [main] (LauncherTransformer) バイトコード変換不可 util.jar/com/intellij/util/io/Murmur3_32Hash jp.sourceforge.mergedoc.javassist.NotFoundException: main(..) is not found in com.intellij.util.io.Murmur3_32Hash jp.sourceforge.mergedoc.javassist.CtClassType.getMethod(CtClassType.java:1275)
jp.sourceforge.mergedoc.javassist.NotFoundException: main(..) is not found in com.intellij.util.io.Murmur3_32Hash
	at jp.sourceforge.mergedoc.javassist.CtClassType.getMethod(CtClassType.java:1275)
	at jp.sourceforge.mergedoc.pleiades.runtime.LauncherTransformer.transformBytecode(LauncherTransformer.java:217)
	at jp.sourceforge.mergedoc.pleiades.runtime.AbstractTransformer$DefaultTransformerDelegate.transform(AbstractTransformer.java:194)
	at jp.sourceforge.mergedoc.pleiades.runtime.AbstractTransformer$DefaultTransformerDelegate.execute(AbstractTransformer.java:82)
	at jp.sourceforge.mergedoc.pleiades.runtime.AbstractTransformer.transform(AbstractTransformer.java:342)
	at jp.sourceforge.mergedoc.pleiades.runtime.LauncherTransformer.transform(LauncherTransformer.java:203)
	at java.instrument/java.lang.instrument.ClassFileTransformer.transform(ClassFileTransformer.java:246)
	at java.instrument/sun.instrument.TransformerManager.transform(TransformerManager.java:188)
	at java.instrument/sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:563)
	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
	at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
	at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:800)
	at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:698)
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:621)
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:579)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
	at com.intellij.util.lang.ClasspathCache.getPackageNameHash(ClasspathCache.java:155)
	at com.intellij.util.lang.ClasspathCache.getClassLoadersByName(ClasspathCache.java:151)
	at com.intellij.util.lang.ClassPath.findClass(ClassPath.java:172)
	at com.intellij.util.lang.UrlClassLoader.findClass(UrlClassLoader.java:221)
	at com.intellij.util.lang.PathClassLoader.findClass(PathClassLoader.java:65)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
INFO  08:28:21.101 [ForkJoinPool-1-worker-23] (PleiadesConfig) Pleiades 構成ファイルをロードしました。pleiades-config-idea.xml
INFO  08:28:21.222 [ForkJoinPool-1-worker-19] (LauncherIdeaTransformer) 追加クラスパスあり: C:\Program Files\Android\Android Studio\plugins\IntelliLang\lib\IntelliLang.jar
INFO  08:28:21.222 [ForkJoinPool-1-worker-19] (LauncherIdeaTransformer) 追加クラスパスあり: C:\Program Files\Android\Android Studio\plugins\Kotlin\lib\kotlin-plugin.jar
INFO  08:28:21.229 [ForkJoinPool-1-worker-19] (LauncherIdeaTransformer) 追加クラスパスなし: C:\Program Files\Android\Android Studio\plugins\sdk-updates\lib\sdk-updates.jar
INFO  08:28:21.229 [ForkJoinPool-1-worker-19] (LauncherIdeaTransformer) 追加クラスパスなし: C:\Program Files\Android\Android Studio\plugins\tfsIntegration\lib\tfsIntegration.jar
```

なんかエラーが出てますね。
え～と、、、
```
ERROR 08:28:21.077 [main] (LauncherTransformer) バイトコード変換不可 util.jar/com/intellij/util/io/Murmur3_32Hash jp.sourceforge.mergedoc.javassist.NotFoundException: main(..) is not found in com.intellij.util.io.Murmur3_32Hash 
```
Javaのutil.jar内にMurmur3_32Hashがないよ。ってか？
そんなばかな・・・・
ということで、util.jarを見てみます。

![as010.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/a10cb588-a719-29c5-fcfe-077d00706ab1.png)

いや、いるし、、、、

## Androidを再インストールしてみる
最終手段で、Android Studioを一旦アンインストールして、インストールしてみます。

日本語化はオフにして起動・・・・・うむ、起動した。（ここまでは予想通り）
日本語化します・・・・起動・・・・・エラー！！！！！

あれ？再インストールしてもダメじゃん。

## 正常に起動するPCとの違いはなんだ？
そう、全部の日本語化したAndroid Studioが起動しなくなるわけではないのです・・・・

ならないPCもあった・・・・
その違いはなんだ？

ということで、結論から書きます。
それは、**日本語化アプリのバージョン**！

そう、バージョンの違いで本件の状況が起きるんです！

冒頭の前提条件でも書いたように、この現象は「最新版」で起きてます。
![as011.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/88571a4c-0732-f0b7-fb37-a6900f258638.png)

１，２バージョン古いものも起きる可能性がありますが、少なくとも下記のバージョンは日本語化しても正常に起動してきます。
![as012.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/49e615d4-8831-3b13-ca71-ad8af9460ed4.png)

「でも、最新版以外のバージョンは入手できないじゃん！」
そうですね、でも解決策があります。

それは、**同時に公開されている「Java8対応版」を使う** こと。
![as013.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/ee610c3a-d513-3274-6873-f57ba1a0ca21.png)

こっちだと、2021.05のバージョンになっており、こっちは正常に日本語化が行われ起動します。
![as014.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/c703bc01-9ed6-be17-5ed2-27a79c8bf2e4.png)

ということで、レッツ！日本語化！
☆一応macOS版も試してみたら、起動さえしなくなるので、上記の「Java8対応版」を使って再度日本語化すると、正常に起動してくるようになるのを確認しました。

※一応、解決策が分かったので、特にPleiades日本語化のissuesには挙げないつもりですが、挙げたい人はやってみてください。