1. k_ui

    No comment

    k_ui
Changes in body
Source | HTML | Preview
@@ -1,59 +1,59 @@
実行可能 jar を `java -jar foo.jar` 叩かないで実行する方法の紹介です。
ダルイ点
------------
実行可能 jar を実行する場合こんな感じで実行することが多いと思います:
```bash:sbt_の実行例.sh
$ java -jar sbt-launch.jar
```
* [sbt](http://www.scala-sbt.org/)
これはダルイので、こういうキッカースクリプトを書く:
```bash
$ cat sbt
#!/bin/sh
SBT_OPTS='-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M'
java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "$@"
$ chmod +x sbt
$ ./sbt
```
* これが sbt 公式が紹介してる方法だったりする: [Setup — sbt Documentation](http://www.scala-sbt.org/release/docs/Getting-Started/Setup.html#unix)
でもこれだと:
```bash
$ ls
sbt sbt-launch.jar
```
強く依存してる2つの別ファイルができて、どっちか移動したら動かなくなるし、心が不安定になる。
解決方法
-----------
基本は、[シェルスクリプトにファイルを添付する](http://qiita.com/k_ui/items/7ac8f6377740ef3a1ee1) と同じ発想。ただし、`java -jar` が少し賢いので、かなりシンプルにできる。
```bash
-$ cat bootstrap
+$ cat bootstrap.sh
#!/bin/sh
SBT_OPTS='-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M'
java $SBT_OPTS -jar "$0" "$@"
exit $?
$ cat bootstrap.sh sbt-launch.jar > sbt
$ chmod +x sbt
$ ./sbt
$ ./sbt help
```
jar もキッカースクリプトも 1 ファイルに梱包してる `sbt` というファイルができる。`bootstrap.sh` の 4 行目の `exit` もファイル末尾の空行も大切です。
ちなみにコレは、[jgit](http://www.eclipse.org/jgit/ "JGit") もやっている方法だったりする。