わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

Oracle Java 9をインストールした環境に,一般ユーザでTomcatを起動する

UbuntuでOracle Java 9を使うに書いた手順で,複数バージョンのJavaをインストールしたのち,tar.gzファイルをもとにして,一般ユーザでTomcatを起動してみました.
起動時のメッセージは,問題なさそうですが,ポート番号8080で,ブラウザよりアクセスしても,例のけったいな生き物のようなロゴを含む,ページが表示されず,エラーとなりました.
シェルに戻り,Tomcatを終了させると,これまでにないエラーメッセージが出てきました.
具体的なメッセージを貼り付けます.まず起動時です.

$ ~/apache-tomcat-8.0.44/bin/startup.sh
Using CATALINA_BASE:   /home/takehikom/apache-tomcat-8.0.44
Using CATALINA_HOME:   /home/takehikom/apache-tomcat-8.0.44
Using CATALINA_TMPDIR: /home/takehikom/apache-tomcat-8.0.44/temp
Using JRE_HOME:        /usr/lib/jvm/java-9-oracle
Using CLASSPATH:       /home/takehikom/apache-tomcat-8.0.44/bin/bootstrap.jar:/home/takehikom/apache-tomcat-8.0.44/bin/tomcat-juli.jar
Tomcat started.

ここでは「Tomcat started.」と表示されていますし,エラーの情報は見当たりません.
なお,apache-tomcat-8.0.44.tar.gzをホームディレクトリに伸張しています.https://tomcat.apache.org/download-80.cgiによると,Tomcat 8.0.xの最新版は現時点で8.0.47ですが,8.0.44は,前期の演習科目で使用したバージョンであり,後期に配属された3年生にも,これを使ってサービスを稼働し,自分のプログラムを動かすよう,指示していたのでした.
終了時のメッセージは,以下のとおりでした.

$ ~/apache-tomcat-8.0.44/bin/shutdown.sh
Using CATALINA_BASE:   /home/takehikom/apache-tomcat-8.0.44
Using CATALINA_HOME:   /home/takehikom/apache-tomcat-8.0.44
Using CATALINA_TMPDIR: /home/takehikom/apache-tomcat-8.0.44/temp
Using JRE_HOME:        /usr/lib/jvm/java-9-oracle
Using CLASSPATH:       /home/takehikom/apache-tomcat-8.0.44/bin/bootstrap.jar:/home/takehikom/apache-tomcat-8.0.44/bin/tomcat-juli.jar
-Djava.endorsed.dirs=/home/takehikom/apache-tomcat-8.0.44/endorsed is not supported. Endorsed standards and standalone APIs
in modular form will be supported via the concept of upgradeable modules.
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

「-Djava.endorsed.dirs=」から始まるメッセージは,これまで見たことがありませんでした.
管理者権限で,使用するJavaの変更が必要なのでしょうか.sudo update-alternatives --config javaを実行して,パスに「java-8-openjdk」を含むものを選択しました.javacについても同様にしました.その後,~/apache-tomcat-8.0.44/bin/startup.shを実行しても…ブラウザでアクセスできず,~/apache-tomcat-8.0.44/bin/shutdown.shでは同じメッセージが出ます.
出力をじっと見ていると,startup.shおよびshutdown.shに共通して「Using JRE_HOME: /usr/lib/jvm/java-9-oracle」があるのに気づきました.Javaのバージョンが,切り替わっていません.再起動しないといけないのか,と思いながら…
この環境変数JRE_HOMEの値を,コマンド実行時に指定してみました.具体的にはこうです.

env JRE_HOME=/usr/lib/jvm/java-8-openjdk-amd64 ~/apache-tomcat-8.0.44/bin/startup.sh
env JRE_HOME=/usr/lib/jvm/java-8-openjdk-amd64 ~/apache-tomcat-8.0.44/bin/shutdown.sh

ディレクトリ/usr/lib/jvm/java-8-openjdk-amd64があることは,lsコマンドで事前に確認済みです.
これらのコマンドで,起動時メッセージの該当箇所は「Using JRE_HOME: /usr/lib/jvm/java-8-openjdk-amd64」となりました.そして,ブラウザから,ポート番号8080にアクセスができました.
JSPでちょっとしたサービスを作る分には,問題ないはずですが,ロジックの一部をJavaで書き,コンパイルして得られたクラスファイルを使用するという場合には,トラブルのもととなりそうです.先ほどのダウンロードページには,End of life for Apache Tomcat 8.0.xへのリンクもあり,来年の6月や9月には,このバージョンは「End of life」とのことです.次年度は,適切なバージョンを選び,授業やゼミで使用するようにします.