即使在阅读:Scala, problem with a jar file之后,我仍然有点困惑。我试图将一些包导入我的Scala文件,即使添加到classpath后,解释器也无法识别它们。
一个例子:
我有导入声明:
import org.json4s._
我从这里下载了.jar:http://mvnrepository.com/artifact/org.json4s/json4s-native_2.10/3.2.4
并使用:
添加到解释器类路径中scala> :cp /Users/aspangher13/Downloads/json4s-native_2.10-3.2.4.jar
Scala承认了类路径:
Your new classpath is: ".:/Users/aspangher13/Downloads/json4s-native_2.10-3.2.4.jar:/Users/aspangher13/Downloads/jna-3.5.2.jar"
但仍然会抛出此错误:
<console>:7: error: object scalatra is not a member of package org
import org.json4s._
谁能看到我做错了什么?谢谢!
作为后续,有谁知道在哪里找到包:JsonAST ._?
答案 0 :(得分:5)
简单地创建一个小的sbt项目。
第一步 - 创建项目
出于您的目的,您不需要复杂的构建。所以只需创建两个文件:
<强> ./ build.sbt 强>
name := "name your project"
version := "0.1"
scalaVersion := "2.10.2" // or whatever you prefer
<强> ./项目/ build.properties 强>
sbt.version=0.12.4
只需转到项目根文件夹并致电sbt
第二步 - 添加依赖关系
打开您的./build.sbt
文件并添加:
libraryDependency ++= Seq(
"org.scalatra" %% "scalatra" % "2.2.1",
"org.scalatra" %% "scalatra-scalate" % "2.2.1",
"org.scalatra" %% "scalatra-specs2" % "2.2.1" % "test",
"org.json4s" %% "json4s-native % "3.2.4",
"net.java.dev.jna" & "jna" & "3.5.2"
)
第三步 - 运行控制台
不要忘记使用reload
任务重新加载sbt,然后调用console
或console-quick
任务。这应该有用。
但是有更简单的方法可以做到这一点:
1)使用gitter8 - Scalatra gitter8 project
2)阅读关于Scalatra sbt dependencies
答案 1 :(得分:4)
仍然不确定如何:cp有效,但如果你执行
scala -classpath "list of jars colon separated"
然后在REPL里面做你的导入它应该工作
import org.json4s._
import org.xyz
但是,当您尝试使用这些类时,您可能会缺少json4s所需的传递依赖项,因此我们回到sbt示例@ 4lex1v describe,它将处理此问题。创建一个小项目并运行sbt console
确实会大大简化这一点。
似乎像-classpath和:cp主要是为了让你的代码在shell中可用,然后只有你理解了所有传递依赖,或者没有。