shin'nosuke さんのアレグロモデラート

アレグロモデラート(Allegro moderato)は、速さを示す演奏記号で「穏やかに速く」

Tomcat サービスが使う JRE (JDK)の場所

あれは今年の春先だったか、自宅で順調にほげほげ言っていたながさわさんに、フリーの仲間から Java の技術的な質問で電話があった。

話題は、Tomcat プラグインを入れた eclipse で、どうやってトレースするのか、ということで、いくつか助言したところで、問題は解決したのだけれど、彼曰く「いやー、実はねー、ながさわさんの前に、ほかの Java エンジニアにも質問したんですけど、Tomcat だけが、Java だと思わないでください』と言われちゃいましたよ、ハハ。」という言葉を聞いて、ああそうねえ、J2EEJava EE って言わないといけなくて、サーブレットコンテナーも、なんかたくさん出ているなあと。
このとき、僕がいた現場は、GlassFish とかいうアプリケーションサーバーで、僕は Java に特化したエンジニアーではないから、別に知らなくてもよいとはいえ、Tomcat しか知らないことや Java EE への知識の少なさを、いろいろと考えさせられる発言だった。

そういったこともあってか、あたらしい Tomcat について、猿でもわかるサイトっていうのが、だいぶ見られなくなっている。10年くらいまえはサイトも本もたくさんあったのに。数はあるにはあるのだが、あたらしいバージョンの設定ファイルの説明が欠けていたりして、これ、コンピュータ英語が読めなかったり、Web アプリケーションの理解があいまいなひとにとっては大変だろうなあ。
ようするに、もう別に Tomcat を使わなくてもよいということか。ちまたには、オープンソースJava EE アプリケーションサーバーがたくさんあふれているのだから。言葉尻でなんとなくわかったかもしれませんが、ながさわさんは、Java という言語にあまり執着はありません。むしろ、あまり好きではない。というよりは、Java 専門のエンジニアーと、波長があわないところがある。この先は、あまり好ましい表現ではなくなるので割愛。

で、長年、謎だったのだが、サービスとして起動している Tomcat がどの JRE を使うのかということ。これまで釈然とする回答が得られていなかった。

インストール時に、JREJDK) の場所を設定できるのだけれども、これはどこに保存されていて、変えたいときはどうするのか。たとえば、インストール時に Java 6 を指定していて、Java 7 でコンパイルされたプログラムを動かそうとした場合、
Exception in thread "main" java.lang.UnsupportedClassVersionError: HelloWorld : Unsupported major.minor version 51.0
これが出る。

%JAVA_HOME% や %CATALINA_HOME% や %PATH% の設定は基本なのだけれども、別に、開発するわけじゃなく、単に Tomcat を動かしたいだけ。経験的に、これらの環境変数は(開発者にとっては基本だが)、Tomcat サービスの動きには関係なくないか?とずっと思っていたのだが、前出のサイトのみなさんは、基本に忠実に %JAVA_HOME%、%CATALINA_HOME%、%PATH% だと。いやっ、設定しても、Tomcat サービスがみにいく場所は変わらんど。

Java の文化は UNIX ベースの文化が入っているので、完全に眼中になかったのだが、%TOMCAT_HOME%\bin\tomcat7w.exe にたどりついた。

tomcat7w_jre_setting

なにー。Tomcat が持ってるのか。(そういや昔、みた気もするが。)

use default にすると、環境変数を見に行くようになるのだが、それはともかく、この tomcat7w.exe の Java Virtual Machine はどこに書かれるのか。まさか、レジストリじゃないだろうなと信じながら、regedit、検索、tomcat、エンター。
HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\Tomcat7\Parameters\Java\Jvm[REZ_SZ] = C:\Program Files\Java\jre7\bin\client\jvm.dll

Tomcat は インストール情報以外の、レジストリいじらないと信じてたのに、信じてたのに…。

ただ、これ。設定して、サービスを再起動しても、変わらないことあります。そのときは、パソコンの再起動か、Tomcat の再インストールをお試しください。

ごきげんよう。