SpringBoot(STS)の起動でjavaw.exeのエラー


経緯

SpringBootとの出会いは、ある会社を調べていたら、出てきてなんだろうーと思って調べたところからです。
とにかく良い!ということで、まったく得意じゃないjavaだけど触ってみようかな?と思い、様々なURLを参照して構築に臨みました。

初めて投稿します。
不備等ありましたら、ご連絡ください。

結果

HelloWorldすらできないレベル。
ちょっとがんばったら動いたので、同じような思いで入り口で躓いている人のために共有しようと思いました。

環境

Windows 10 64bit

STSのインストール

SpringBootには、eclipseと実行環境がくっついているSTSというものが便利だそうです。

  • 以下のURLから、STS4をダウンロードしました。

STS Download URL

ファイル名は以下でした。
spring-tool-suite-4-4.1.2.RELEASE-e4.10.0-win32.win32.x86_64.zip

  • C:ドライブの直下に、stsというフォルダーを作成しました。
  • stsフォルダー内に先ほどダウンロードしたzipファイルを格納しました。
  • zipファイルをstsフォルダー内で解凍しました。

この状態で SpringToolSuite4.exe を実行すると、以下のようなエラーが出力されます。

このエラーでググると、javaがインストールされていないとのこと。
よくよく見てみると、
C:\sts\sts-4.1.2.RELEASE\jre\bin\javaw.exe
という内容が出力されています。
この場所にjavaを配置すれば、起動できるのでは…?と思いました。

javaのインストール

JREがjava runtimeで実行版だというぼんやりとした知識はあったので、インストールを試みます。
ですが、javaは単純にインストールすると、ほかの環境と競合したり、毎回バージョンアップ!バージョンアップ!うるさいイメージがあったので、zipから解凍して、前述のパスに配置することにしました。
STSを64bit版にしたので、javaも64bit版で。
JREがなぜか見つからなかったので、以下のURLから、JDKをダウンロード。(まずかったらごめんなさい…。)

JDK Download URL

ダウンロードしたファイル名は以下です。
jdk-11.0.2_windows-x64_bin.zip

以下の手順で、このファイルを前述のSTSが参照しているパスに配置します。

  • ダウンロードしたzipファイルを、C:\sts\sts-4.1.2.RELEASEに配置します。
  • 配置したzipファイルを解凍します。
  • 解凍すると、「jdk-11.0.2」というフォルダーが作られます。
    「jdk-11.0.2」フォルダーの名前を、「jre」に変更します。

これで、SpringToolSuite4が起動できると思います!

最初のプロジェクトを作成

  • File > New > Spring Starter Project をクリック
  • そのまま次へ
  • 以下のチェックを入れ、次へ
    • Template Engines - Thymeleaf
    • Web - Web
  • Finish

画面右下にプログレスバーが表示されるので、しばらく待ちます。

Demoアプリケーションの起動

作成したdemoアプリケーションを起動します。

  • プロジェクトを右クリック > Run As > Spring Boot App

以下のエラーが出てしまう…。

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    String cannot be resolved to a type

    at com.example.demo.DemoApplication.main(DemoApplication.java:9)

Stringがない?

JREを追加する

  • Window > Preferences
  • Java > Installed JREs
  • Add > Standard VM > Next
  • JRE home に "C:\sts\sts-4.1.2.RELEASE\jre" を指定。 > Finish
  • Apply And Close をクリックします。
  • STSがフリーズする…。
  • どうしようもないのでSTSを強制終し、STSを再起動します。

Demoアプリケーションを再度起動

プロジェクトを右クリック > Run As > Spring Boot App

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.3.RELEASE)
~(省略)~
DemoApplication in 2.981 seconds (JVM running for 4.501)

起動できました!

最後に

当初、STS 3.9.7で試していて、この事象に出くわし、Qiitaに投稿しようと思い、再現させようとしたところ、STS 4系であっさりうまくいってしまいました。
で、もう一度やったところ、再現し、STS 3.9.7と同様に試してみたところうまくいきました。
javaをインストールすれば簡単なのでしょうが、無理やりにでもなんとかしたかったので、このような内容になりました。

STS 3.9.7 の時はさらにMavenが邪魔をしてうまくいかないことがあったのですが、このページの内容にあわせ、以下の手順で解決できました。

  • 一度、STSを閉じる
  • C:\Users\<user>\.m2のフォルダーを削除する
  • STSを起動する
  • Building workspaceをしばし待つ
  • プロジェクトを右クリック > Maven > Update Project > OK
  • しばし待つ