Scala初学者在多个文件上编译和运行scala程序
发布时间:2020-12-16 18:33:11 所属栏目:安全 来源:网络整理
导读:我正在研究 ScalaInAction中的示例,我无法运行遍布多个文件并放在单个包中的示例. 这是代码. mongoclient.scala package com.scalainaction.mongoimport com.mongodb._class MongoClient(val host:String,val port:Int) { require(host != null,"You have to
我正在研究
ScalaInAction中的示例,我无法运行遍布多个文件并放在单个包中的示例.
这是代码. mongoclient.scala package com.scalainaction.mongo import com.mongodb._ class MongoClient(val host:String,val port:Int) { require(host != null,"You have to provide a host name") val underlying = new com.scalainaction.mongo.Mongo def this() = this("127.0.0.1",27017) def version = underlying.getVersion def dropDB(name:String) = underlying.dropDatabase(name) def createDB(name:String) = DB(underlying.getDB(name)) def db(name:String) = DB(underlying.getDB(name)) } DB.scala package com.scalainaction.mongo import com.mongodb.{DB => MongoDB} import scala.collection.convert.Wrappers._ class DB private(val underlying: MongoDB) { private def collection(name: String) = underlying.getCollection(name) def readOnlyCollection(name: String) = new DBCollection(collection(name)) def administrableCollection(name: String) = new DBCollection(collection(name)) with Administrable def updatableCollection(name: String) = new DBCollection(collection(name)) with Updatable def collectionNames = for(name DBCollection.scala package com.scalainaction.mongo import com.mongodb.{DBCollection => MongoDBCollection } import com.mongodb.DBObject class DBCollection(override val underlying: MongoDBCollection) extends ReadOnly trait ReadOnly { val underlying: MongoDBCollection def name = underlying.getName def fullName = underlying.getFullName def find(doc: DBObject) = underlying.find(doc) def findOne(doc: DBObject) = underlying.findOne(doc) def findOne = underlying.findOne def getCount(doc: DBObject) = underlying.getCount(doc) } trait Administrable extends ReadOnly { def drop: Unit = underlying.drop def dropIndexes: Unit = underlying.dropIndexes } trait Updatable extends ReadOnly { def -=(doc: DBObject): Unit = underlying.remove(doc) def +=(doc: DBObject): Unit = underlying.save(doc) } 所有程序都放在同一个包中 我不使用IDE,所以我通过运行编译这些文件 scalac mongoclient.scala DB.scala DBCollection.scala 我的$CLASSPATH包含mongodb.jar文件,并且还指向我的应用程序目录中的com.scalainaction.mongo文件夹 现在我打算运行一个程序,通过运行来使用该程序包 scala quickTour.scala -cp $CLASSPATH` import com.scalainaction.mongo._ import com.mongodb.BasicDBObject def client = new MongoClient("127.0.0.1",27017) def db = client.db("mydb") for(name 但我的应用程序无法找到MongoClient类,我收到此错误 quickTour.scala:1: error: object scalainaction is not a member of package com import com.scalainaction.mongo._ ^ /Users/sid/scala_apps/quickTour.scala:4: error: MongoClient does not have a constructor def client = new MongoClient("127.0.0.1",27017) ^ two errors found 我不遵循为什么它找不到构造函数.我已经使用def this方法定义了一个重载的构造函数 为什么找不到com.scalanation.mongo? 我将不胜感激任何帮助 **更新** 我的com / scalainaction / mongo文件夹中的文件是 Administrable$class.class DB$.class ReadOnly$class.class Administrable.class DB.class ReadOnly.class DB$$anon$1.class DBCollection.class Updatable$class.class DB$$anon$2.class MongoClient$$anonfun$1.class Updatable.class DB$$anonfun$collectionNames$1.class MongoClient.class 解决方法
问题是您的文件夹com和/或com / scalainaction是空的.在那里放一些课,它应该工作.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |