如何从命令行使用 jarjar?

发布于 2024-08-05 11:27:11 字数 568 浏览 6 评论 0原文

我在从命令行使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

天邊彩虹 2024-08-12 11:27:11

使用 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

Using the java "-jar" option ignores the classpath. Try specifying the main class explicitly with a classpath, and omit "-jar":

java -cp ~/Desktop/saug/jarjar-1.0.jar:./scala-library.jar com.tonicsystems.jarjar.Main process rules.jjl BCT.jar BCTS.jar
暮倦 2024-08-12 11:27:11

尝试为 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.

愁以何悠 2024-08-12 11:27:11

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文