5

コマンドラインから jarjar を使用して単純な Scala プログラムを scala ランタイム ライブラリと組み合わせるのに問題があります。

jarjar は依存関係を正しく検出します。

$ java -jar ~/Desktop/saug/jarjar-1.0.jar find jar BCT.jar scala-library.jar
/home/schani/Work/scala/bct/BCT.jar -> /home/schani/Work/scala/bct/scala-library.jar

ただし、それらを組み合わせても機能しません。

$ CLASSPATH=./scala-library.jar java -jar ~/Desktop/saug/jarjar-1.0.jar process rules.jjl BCT.jar BCTS.jar

私が得る jar ファイルはまだ scala-library.jar に依存しています。CLASSPATH 変数を追加するかどうかは関係ありません。私の rules.jjl ファイルは次のようになります。

keep BCT

何をすべきか?

4

3 に答える 3

1

javaの「-jar」オプションを使用すると、クラスパスが無視されます。クラスパスを使用してメインクラスを明示的に指定し、「-jar」を省略してみてください。

java -cp ~/Desktop/saug/jarjar-1.0.jar:./scala-library.jar com.tonicsystems.jarjar.Main process rules.jjl BCT.jar BCTS.jar
于 2009-09-23T17:27:13.560 に答える
0

jarjar は、他の jar を自分の jar に再​​パッケージ化しません。1 つの jar 自体内の依存関係の名前のみを変更します。

ここで概説されている方法を使用してください複数の瓶を組み合わせるきれいな方法? できれば、Antを使用してすべての依存 jar を jar に rejar し、jarjar を実行して、将来の依存関係の地獄を防ぎます。

于 2009-10-20T18:15:34.263 に答える
0

scala.runtime.Nothing$ クラスの keep を追加してみてください。同様の製品 (autojar; http://autojar.sourceforge.net/en_d/index.html ) を Scala で使用する場合、これが必要であることがわかりました。

于 2009-09-28T14:41:06.573 に答える