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

尝试为 scala.runtime.Nothing$ 类添加保留。在使用 Scala 的类似产品(autojar;http ://autojar.sourceforge.net/en_d/index.html )时,我发现这是必要的。

于 2009-09-28T14:41:06.573 回答
0

jarjar 不会将其他 jar 重新打包到您的 jar 中。它只重命名一个 jar 本身内部的依赖项。

使用此处概述的方法清洁方式来组合多个罐子?最好使用 Ant将所有依赖的 jar 重新打包到您的 jar 中,然后运行 ​​jarjar 以防止将来出现依赖地狱。

于 2009-10-20T18:15:34.263 回答