[英]How to use jarjar from the command-line?
我无法从命令行使用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
该怎么办?
使用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
尝试为scala.runtime.Nothing $ class添加一个keep。 当我使用Scala的类似产品(autojar; http://autojar.sourceforge.net/en_d/index.html )时,我发现这是必要的。
jarjar不会将其他罐子重新包装到你的罐子里。 它只重命名一个jar本身内的依赖项。
使用此处概述的方法清洁方式组合多个罐子? 最好使用Ant将所有依赖的罐子重新装入你的罐子里,然后运行jarjar以防止将来的依赖性地狱。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.