创建和使用没有 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 项目中