Scalaソースコードを、Javaクラスファイルにコンパイルしたあと、Scalaがインストールされていない環境でも(Java実行環境があれば)単体で実行可能なJarファイルにまとめる手順について。
jarコマンドとか、classpathとかそのへんすごい苦手なので、備忘録。
おおむね下記サイトに掲載されている通りでも問題ない。
■ScalaをJar化してみるComments - ゲーム作ろうよ
http://d.hatena.ne.jp/mitsu_chie/20100719/1279552867
だけど、要らない手順も含まれていたので、整理しておく。
1. Scalaソースコードを作成
ともかくmainメソッドを持つobject(シングルトンクラス)があればよいよね。
例えば、
HelloWorld.scala
object HelloWorld {とか。
def main (args: Array[String]): Unit = println("Hello world!")
}
2. scalacコマンドでJavaクラスファイルに変換
コマンドラインで、作成したScalaソースコード・ファイルを指定して
scalac HelloWorld.scalaこの段階で、
scala HelloWorldとコマンドを打てば、「Hello world!」とか表示されるはず。
3. scala-library.jarを用意する
scala-library.jarは、Scalaのインストール・ディレクトリに含まれる。
jarコマンドに長々とパスを指定したりしたくないので、scala-library.jarをコピーして、
Scalaソースコードと同じディレクトリにコピーする。
コマンドプロンプトで、
jar xf scala-library.jarを実行して、scala-library.jarを展開する。結果的にフォルダ内にはscalaフォルダが新たに作られる。
4. マニフェスト・ファイルを作成
作成する実行可能Jarファイルの、実行時の設定を指定するため、マニフェスト・ファイルを用意する。
マニフェスト・ファイルでは、mainメソッドを持つクラス名(Scalaコード的にはobjectとして作ったもの)の名称
例えば、
manifest.mf
Manifest-Version: 1.0とか。
Main-Class: HelloWorld
Class-Path: scala-library.jar
このファイルも便宜上、Scalaソースコードと同じディレクトリに 保存。
5. jarコマンドでアーカイブ
jarコマンドのオプションとして、
c(Jarファイルをつくるよ)
f(作成するJarファイル名を指定するよ)
m(マニフェスト・ファイルもあるよ)
を与え、
さらに、作成するJarファイルの名前と、作成したマニフェスト・ファイル名を指定。
最後に、新たにJarファイルとしてまとめることになるJavaクラスファイルやJarファイルを指定。
例えば、
jar cfm HelloWorld.jar manifest.mf *.class scalaとなる。-library.jar
これで、このディレクトリ内のすべてのJavaクラスファイルと、scala-library.jarがまとめられてJarファイルHelloWorld.jarになる。
java -jar HelloWorld.jarなどとコマンドを打てば、「Hello world!」とか表示される。
Scalaコード内で呼び出しているScala APIによっては、jarコマンド末尾のアーカイブ化対象クラスファイルやJarファイルの一覧がながーくなっていくものと思われる。
0 件のコメント:
コメントを投稿