[Rhino] rhino1.7.7.zipのjs.jarでRhino Shellを起動すると最初にnullが出力される

投稿日: 2015/12/13 10:09:27

Rhino1.7.7のリリースページに、rhino-1.7.7.jarとrhino1.7.7.zipが公開されています。rhino1.7.7.zipに含まれているjs.jarはrhino-1.7.7.jarと基本的に同じものですが、js.jarに含まれているMANIFEST.MFの記述に若干問題があり、Rhino Shellを起動すると最初にRhinoのバージョンではなくnullが出力されます。

気になる場合は、代わりにrhino-1.7.7.jarを使いましょう。

詳細: Rhinoのバージョンを返すContext.getImplementationVersion()メソッドは、MANIFEST.MFのImplementation-Titleが"Mozilla Rhino"と一致する場合はバージョンを、そうでない場合はnullを返します。ところがrhino1.7.7.zipのjs.jarに含まれているMANIFEST.MFはImplementation-Titleが"Mozilla Rhino 1.7.7"なので、結果としてnullが出力されます。rhino-1.7.7.jarはMANIFEST.MFのImplementation-Titleが"Mozilla Rhino"なので大丈夫です。

1-1. rhino1.7.7.zipのjs.jarでRhino Shellを起動するとnullが出力される

>echo "quit();" | java -jar js.jar
null
js> quit();
js>

1-2. rhino-1.7.7.jarでRhino Shellを起動するとRhinoのバージョンが出力される

>echo "quit();" | java -jar rhino-1.7.7.jar
Rhino 1.7.7 2015 06 17
js> quit();
js>

2-1. rhino1.7.7.zipのjs.jarに含まれるMANIFEST.MF

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.9.4
Created-By: 1.7.0_45-b18 (Oracle Corporation)
Main-Class: org.mozilla.javascript.tools.shell.Main
Implementation-Version: 1.7.7-SNAPSHOT
Implementation-Title: Mozilla Rhino 1.7.7
Implementation-Vendor: Mozilla Foundation
Implementation-URL: http://www.mozilla.org/rhino

2-2. rhino-1.7.7.jarに含まれるMANIFEST.MF

Manifest-Version: 1.0
Main-Class: org.mozilla.javascript.tools.shell.Main
Implementation-Version: 1.7.7
Implementation-Title: Mozilla Rhino
Implementation-Vendor: Mozilla Foundation
Implementation-URL: http://www.mozilla.org/rhino
Built-Date: 2015-06-17
Built-Time: 10:35:00