创建和使用没有 sbt 的独立 scalaz jar

Posted

技术标签:

【中文标题】创建和使用没有 sbt 的独立 scalaz jar【英文标题】:creating and using standalone scalaz jar without sbt 【发布时间】:2011-12-31 13:59:31 【问题描述】:

我已经从存储库(版本 6.0.4)下载了 scalaz 快照。 我想创建独立的 jar 文件并将其放入我的 scala lib 目录中,以便在没有 sbt 的情况下使用 scalaz。

我有来自 scala-lang.org 的 scala 包,并存储在 /opt/scala 据我所知:

转到未去皮重的 scalaz 目录 从 scalaz 项目运行 sbt 编译scalaz项目 制作一个包(通过包命令) sbt 制作一个完整的 jar/target/scala-2.9.1/scalaz-full_2.9.1-6.0.4-SNAPSHOT.jar 它还产生其他jar:full/lib/sxr_2.9.0-0.2.7.jar 我将两个 jar 移至 /opt/scala/lib

在此之后,我尝试了 scala repl,但我无法导入 scalaz。我尝试导入scalaz._Scalaz._org.scalaz._scalaz-core._ 并且不工作。 输入 import scalaz 后 REPL 代码完成提示:scalaz_2.9.1-6.0.4-SNAPSHOT. 但是import scalaz_2.9.1-6.0.4-SNAPSHOT._ 不行

有什么想法吗?

【问题讨论】:

【参考方案1】:

您可以下载scalaz 并提取包含scalaz-core_2.9.1-6.0.3.jar 的jar。或download scalaz-core directly。

然后您可以使用:scala -cp scalaz-core_2.9.1-6.0.3.jar 来启动 REPL,最终 import scalaz._ 按预期进行。

如果你想使用sbt制作的jar,你可以在core/target/scala-2.9.1/scalaz-core_2.9.1-6.0.4-SNAPSHOT.jar找到它(你也会在同一目录下找到source和javadoc包)。只需将此文件放在您的类路径中(例如使用scala -cp),您就可以import scalaz._

【讨论】:

不完全是 - 我想从 sbt 制作它。 @RobertZaremba 我已经修改了我的答案。我希望这会有所帮助。【参考方案2】:

我想我知道问题所在。

scalaz-full_2.9.1-6.0.4-SNAPSHOT.jar 不是 java jar 类包,它只是一个带有 scalaz 项目的 zip - 所以它不包含包 - 类似于目录树(例如:目录名称包含 '.' )。

所以要使用它,我们需要解压缩 scalaz-full_2.9.1-6.0.4-SNAPSHOT.jar,并复制所需的 jars(例如:scalaz-core_2.9.1-6.0.4-SNAPSHOT.jar、scalaz-http_2. 9.1-6.0.4-SNAPSHOT.jar ...) 到 lib 目录。

【讨论】:

以上是关于创建和使用没有 sbt 的独立 scalaz jar的主要内容,如果未能解决你的问题,请参考以下文章

运行使用 SBT 和 ProGuard 构建的独立 jar 时出现 AbstractMethodError

激活器依赖错误

使用 scala sbt 构建一个独立的 jar 以合并到一个 android 项目中

如何使用 Play Framework 的 SBT 下载 Maxmind 数据库

学习进度十三(Scala独立应用编程)

sbt共享项目之间的依赖关系