如何从命令行使用 jarjar?
我在从命令行使用 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
该怎么办?
I'm having trouble using jarjar from the command-line to combine a simple Scala program with the scala runtime-library.
jarjar correctly detects the dependency:
$ 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
Combining them doesn't work, however:
$ CLASSPATH=./scala-library.jar java -jar ~/Desktop/saug/jarjar-1.0.jar process rules.jjl BCT.jar BCTS.jar
The jar file that I get still depends on scala-library.jar. Whether or not I add the CLASSPATH variable makes no difference. My rules.jjl file looks like this:
keep BCT
What to do?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用 java“-jar”选项会忽略类路径。尝试使用类路径显式指定主类,并省略“-jar”:
Using the java "-jar" option ignores the classpath. Try specifying the main class explicitly with a classpath, and omit "-jar":
尝试为 scala.runtime.Nothing$ 类添加保留。我发现在使用类似产品时这是必要的(autojar; http://autojar.sourceforge.net/ en_d/index.html)与 Scala。
Try adding a keep for the scala.runtime.Nothing$ class. I found this necessary when using a similar product (autojar; http://autojar.sourceforge.net/en_d/index.html) with Scala.
jarjar 不会将其他 jar 重新打包到您的 jar 中。它仅重命名一个 jar 本身内的依赖项。
使用此处概述的方法 组合多个 jar 的干净方法?最好使用 Ant 将所有依赖的 jar 重新打包到您的 jar 中,然后运行 jarjar 以防止将来出现依赖地狱。
jarjar does not repackage other jars into your jar. It only renames dependencies inside the one jar itself.
Use the method outlined here Clean way to combine multiple jars? Preferably using Ant to rejar all the dependent jars into your jar, then run jarjar to prevent future dependency hell.