加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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)
}

所有程序都放在同一个包中
com.scalainaction.mongo.

我不使用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是空的.在那里放一些课,它应该工作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读