概要
Java8では標準でJavaScriptのエンジン(Nashorn)がついています。
1.7まで同梱されていたJavaScriptエンジンのRhinoは、標準ではついていません。
そこで、1.7までのエンジンを使いたい時の方法についてまとめておきます。
手順と注意点
Oracleのサイトに手順があるのですが、こちらが1箇所直すべき点があります。
具体的には、以下の部分がうまく動かないため
svn checkout https://java.net/projects/Scripting
以下のようにして取得します。
svn checkout https://svn.java.net/svn/scripting~svn
上記のURLは、
https://java.net/projects/Scripting
のページ中ほどの、"get source"リンクをクリックすることで知ることができます。
手順をまとめたスクリプト
上記サイトで示された手順をOSX 10.10上でスクリプト化したものを以下に置いておきます。
https://gist.github.com/hrkt/042c9764fe7e3d521133
このスクリプトの実行結果は以下のようになります。
hirokis-MBP:tmp hiroki$ ./build.sh
-- downloading Rhino
Cloning into 'rhino'...
remote: Counting objects: 36658, done.
remote: Compressing objects: 100% (10550/10550), done.
remote: Total 36658 (delta 20638), reused 36407 (delta 20562)
Receiving objects: 100% (36658/36658), 12.79 MiB | 786.00 KiB/s, done.
Resolving deltas: 100% (20638/20638), done.
Checking connectivity... done.
Buildfile: /Users/hiroki/tmp/rhino/build.xml
properties:
init:
[mkdir] Created dir: /Users/hiroki/tmp/rhino/build
[mkdir] Created dir: /Users/hiroki/tmp/rhino/build/classes
[mkdir] Created dir: /Users/hiroki/tmp/rhino/build/rhino1.8.0-SNAPSHOT
compile:
compile-most:
[javac] Compiling 217 source files to /Users/hiroki/tmp/rhino/build/classes
[javac] 警告: [options] ブートストラップ・クラスパスが-source 1.5と一緒に設定されていません
[javac] 警告: [options] ソース値1.5は廃止されていて、今後のリリースで削除される予定です
[javac] 警告: [options] ターゲット値1.5は廃止されていて、今後のリリースで削除される予定です
[javac] 警告: [options] 廃止されたオプションについての警告を表示しないようにするには、-Xlint:オプションを使用します。
[javac] 注意:/Users/hiroki/tmp/rhino/src/org/mozilla/javascript/commonjs/module/provider/SoftCachingModuleScriptProvider.javaの操作は、未チェックまたは安全ではありません。
[javac] 注意:詳細は、-Xlint:uncheckedオプションを指定して再コンパイルしてください。
[javac] 警告4個
[copy] Copying 2 files to /Users/hiroki/tmp/rhino/build/classes
compile-jdk15:
[javac] Compiling 1 source file to /Users/hiroki/tmp/rhino/build/classes
[javac] 警告: [options] ブートストラップ・クラスパスが-source 1.5と一緒に設定されていません
[javac] 警告: [options] ソース値1.5は廃止されていて、今後のリリースで削除される予定です
[javac] 警告: [options] ターゲット値1.5は廃止されていて、今後のリリースで削除される予定です
[javac] 警告: [options] 廃止されたオプションについての警告を表示しないようにするには、-Xlint:オプションを使用します。
[javac] 警告4個
compile:
properties:
compile:
[javac] Compiling 29 source files to /Users/hiroki/tmp/rhino/build/classes
[javac] 警告: [options] ブートストラップ・クラスパスが-source 1.5と一緒に設定されていません
[javac] 警告: [options] ソース値1.5は廃止されていて、今後のリリースで削除される予定です
[javac] 警告: [options] ターゲット値1.5は廃止されていて、今後のリリースで削除される予定です
[javac] 警告: [options] 廃止されたオプションについての警告を表示しないようにするには、-Xlint:オプションを使用します。
[javac] 注意:/Users/hiroki/tmp/rhino/toolsrc/org/mozilla/javascript/tools/debugger/SwingGui.javaの操作は、未チェックまたは安全ではありません。
[javac] 注意:詳細は、-Xlint:uncheckedオプションを指定して再コンパイルしてください。
[javac] 警告4個
[copy] Copying 1 file to /Users/hiroki/tmp/rhino/build/classes
xmlimplsrc-compile:
[echo] Calling /Users/hiroki/tmp/rhino/xmlimplsrc/build.xml
compile:
e4x-compile:
[javac] Compiling 11 source files to /Users/hiroki/tmp/rhino/build/classes
[javac] 警告: [options] ブートストラップ・クラスパスが-source 1.5と一緒に設定されていません
[javac] 警告: [options] ソース値1.5は廃止されていて、今後のリリースで削除される予定です
[javac] 警告: [options] ターゲット値1.5は廃止されていて、今後のリリースで削除される予定です
[javac] 警告: [options] 廃止されたオプションについての警告を表示しないようにするには、-Xlint:オプションを使用します。
[javac] 警告4個
no-e4x-compile:
old-e4x:
xmlbeans-unzip:
xmlbeans-get:
[mkdir] Created dir: /Users/hiroki/tmp/rhino/build/tmp-xbean
[get] Getting: http://archive.apache.org/dist/xmlbeans/binaries/xmlbeans-2.5.0.zip
[get] To: /Users/hiroki/tmp/rhino/build/tmp-xbean/xbean.zip
[unzip] Expanding: /Users/hiroki/tmp/rhino/build/tmp-xbean/xbean.zip into /Users/hiroki/tmp/rhino/build/tmp-xbean
[copy] Copying 1 file to /Users/hiroki/tmp/rhino/lib
[copy] Copying 1 file to /Users/hiroki/tmp/rhino/lib
[delete] Deleting directory /Users/hiroki/tmp/rhino/build/tmp-xbean
old-e4x-compile:
[echo] Compiling XMLBeans E4X implementation using ./lib/xbean.jar and ./lib/jsr173_1.0_api.jar
[javac] Compiling 11 source files to /Users/hiroki/tmp/rhino/build/classes
[javac] 警告: [options] ブートストラップ・クラスパスが-source 1.5と一緒に設定されていません
[javac] 警告: [options] ソース値1.5は廃止されていて、今後のリリースで削除される予定です
[javac] 警告: [options] ターゲット値1.5は廃止されていて、今後のリリースで削除される予定です
[javac] 警告: [options] 廃止されたオプションについての警告を表示しないようにするには、-Xlint:オプションを使用します。
[javac] 注意:入力ファイルの操作のうち、未チェックまたは安全ではないものがあります。
[javac] 注意:詳細は、-Xlint:uncheckedオプションを指定して再コンパイルしてください。
[javac] 警告4個
no-old-e4x-compile:
compile-all:
compile:
[javac] Compiling 3 source files to /Users/hiroki/tmp/rhino/build/classes
[javac] 警告: [options] ブートストラップ・クラスパスが-source 1.5と一緒に設定されていません
[javac] 警告: [options] ソース値1.5は廃止されていて、今後のリリースで削除される予定です
[javac] 警告: [options] ターゲット値1.5は廃止されていて、今後のリリースで削除される予定です
[javac] 警告: [options] 廃止されたオプションについての警告を表示しないようにするには、-Xlint:オプションを使用します。
[javac] 警告4個
jar:
[copy] Copying 1 file to /Users/hiroki/tmp/rhino/build/classes
[jar] Building jar: /Users/hiroki/tmp/rhino/build/rhino1.8.0-SNAPSHOT/js.jar
BUILD SUCCESSFUL
Total time: 21 seconds
-- downloading JavaScript engine
A javascript/lib
A javascript/lib/js.jar
A javascript/src
A javascript/src/com
A javascript/src/com/sun
A javascript/src/com/sun/phobos
A javascript/src/com/sun/phobos/script
A javascript/src/com/sun/phobos/script/javascript
A javascript/src/com/sun/phobos/script/javascript/RhinoScriptEngine.java
A javascript/src/com/sun/phobos/script/javascript/ExternalScriptable.java
A javascript/src/com/sun/phobos/script/javascript/EmbeddedRhinoScriptEngineFactory.java
A javascript/src/com/sun/phobos/script/javascript/JSAdapter.java
A javascript/src/com/sun/phobos/script/javascript/RhinoCompiledScript.java
A javascript/src/com/sun/phobos/script/javascript/RhinoScriptEngineFactory.java
A javascript/src/com/sun/phobos/script/javascript/EmbeddedRhinoScriptEngine.java
A javascript/src/com/sun/phobos/script/util
A javascript/src/com/sun/phobos/script/util/ScriptEngineFactoryBase.java
A javascript/src/com/sun/phobos/script/util/BindingsImpl.java
A javascript/src/com/sun/phobos/script/util/DeTagifier.java
A javascript/src/com/sun/phobos/script/util/ExtendedScriptException.java
A javascript/src/com/sun/phobos/script/util/ScriptEnginePool.java
A javascript/src/com/sun/phobos/script/util/BindingsBase.java
A javascript/src/com/sun/phobos/script/util/BindingsEntrySet.java
A javascript/src/com/sun/phobos/script/util/InterfaceImplementor.java
A javascript/src/META-INF
A javascript/src/META-INF/toplevel.js
A javascript/src/META-INF/services
A javascript/src/META-INF/services/javax.script.ScriptEngineFactory
A javascript/bin
A javascript/bin/js.sh
A javascript/bin/js.bat
A javascript/README.TXT
A javascript/make
A javascript/make/build.xml
A javascript/THIRDPARTYLICENSES.TXT
A javascript/LICENSE.TXT
Checked out revision 236.
Buildfile: /Users/hiroki/tmp/javascript/make/build.xml
prepare:
[mkdir] Created dir: /Users/hiroki/tmp/javascript/build/classes
compile:
[javac] /Users/hiroki/tmp/javascript/make/build.xml:31: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
[javac] Compiling 15 source files to /Users/hiroki/tmp/javascript/build/classes
[javac] /Users/hiroki/tmp/javascript/src/com/sun/phobos/script/javascript/RhinoScriptEngine.java:337: 警告: [deprecation] ContextのcompileReader(Scriptable,Reader,String,int,Object)は非推奨になりました
[javac] Script scr = cx.compileReader(scope, preProcessScriptSource(script), filename, 1, null);
[javac] ^
[javac] 注意:入力ファイルの操作のうち、未チェックまたは安全ではないものがあります。
[javac] 注意:詳細は、-Xlint:uncheckedオプションを指定して再コンパイルしてください。
[javac] 警告1個
[copy] Copying 1 file to /Users/hiroki/tmp/javascript/build/classes/META-INF/services
[copy] Copying 1 file to /Users/hiroki/tmp/javascript/build/classes/META-INF
deploy:
[jar] Building jar: /Users/hiroki/tmp/javascript/build/js-engine.jar
all:
BUILD SUCCESSFUL
Total time: 1 second
done.
-- write source
-- compile
-- execute
engine:RhinoScriptEngine
265