在MongoDB中使用Scala - java.lang.NoClassDefFoundError:com/mongodb/DBObject
问题描述:
我创建了一个简单的项目。在MongoDB中使用Scala - java.lang.NoClassDefFoundError:com/mongodb/DBObject
“sbt run”正常工作。
我运行“sbt package”后出现jar文件,但它不起作用。
$ scala target/scala-2.9.2/hello_2.9.2-0.1.jar
以下错误occures:
java.lang.NoClassDefFoundError: com/mongodb/DBObject
这里是我的文件:
Hello.scala
package greeter
object Hello extends App {
import com.mongodb.casbah.Imports._
val mongoClient = MongoClient()
println("Connected to MongoDB")
val collection = mongoClient("test")("foo")
val doc = MongoDBObject("msg" -> "Hi from Scala!")
collection.insert(doc)
println("Doc inserted");
}
build.sbt
name := "hello"
mainClass := Some("greeter.Hello")
version := "0.1"
scalaVersion := "2.9.2"
libraryDependencies += "org.mongodb" % "casbah_2.9.2" % "2.5.0"
resolvers += "snapshots" at "https://oss.sonatype.org/content/repositories/snapshots"
resolvers += "releases" at "https://oss.sonatype.org/content/groups/scala-tools"
答
运行scala
命令时,需要将库依赖项添加到类路径中。假设你下载一个lib文件夹中的所有库罐子,你将需要运行:
scala -cp "lib/*" target/scala-2.9.2/hello_2.9.2-0.1.jar
在build.sbt,使用以下设置为自动下载在lib_managed文件夹中所有的罐子:
retrieveManaged := true
谢谢。所以我需要将lib_managed文件夹中的所有jar文件复制到lib文件夹中?有没有一个简单的命令,或者我需要使用一些棘手的bash命令?我该如何将所有这些罐子结合在一起? – un1t 2013-02-09 05:34:19
其实你可以直接使用的lib_managed文件夹: '斯卡拉-cp“lib_managed/*”目标/斯卡拉-2.9.2/hello_2.9.2-0.1.jar' 或者你可以复制整个文件夹: 'cp -rf lib_managed lib' – 2013-02-09 06:42:33
我试过'-cp“lib_managed/*”',但它不起作用。同样的错误发生在java.lang.NoClassDefFoundError:com/mongodb/DBObject中。比我复制所有jar到lib filder并使用'-cp“lib/*”',并且它工作。 – un1t 2013-02-09 06:49:38