当前位置: 首页 > 知识库问答 >
问题:

Scala初学者在多个文件上编译和运行scala程序

房光临
2023-03-14

这是代码。

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


数据库。斯卡拉


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。斯卡拉


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。缩放操作。我的应用程序目录中的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

共有1个答案

益银龙
2023-03-14

问题是您的com和/或com/scalainaction文件夹为空。在那里开设一些课程,应该会奏效。

 类似资料:
  • 本书是 The Neophyte’s Guide to Scala 的中文翻译,The Neophyte’s Guide to Scala 是 Daniel Westheide 写的一系列有关 Scala 的文章。

  • 本文向大家介绍Scala概述| Scala编程教程,包括了Scala概述| Scala编程教程的使用技巧和注意事项,需要的朋友参考一下 Scala是Martin Odersky开发的一种编程语言。它于2003年投放市场。Scala代表可扩展语言。Scala是一种基于Java的编程语言,比Java更容易编码。因此被视为企业软件开发中Java的未来替代品。 Scala编程语言的功能 Scala的一些功

  • 我对scala语言(和一般编程)比较陌生。我最近安装了JDK和Scala IDE(用于eclipse)。安装进行得很顺利,但我在尝试运行Hello World应用程序时遇到了一个问题。当我尝试“运行方式”时,唯一可用的选项是“Java小程序”和“Java应用程序”。如何继续尝试作为“Scala应用程序”运行?非常感谢!

  • 本文向大家介绍Scala基础知识和语法 Scala编程教程,包括了Scala基础知识和语法 Scala编程教程的使用技巧和注意事项,需要的朋友参考一下 在安装并了解了Scala之后,该介绍一下Scala中重要的一些基本概念了。您将在Scala开发载体中多次使用它们。 一些基本的Scala概念 对象: 对象是类的实例。它具有状态和行为。例如,一辆汽车具有以下状态:颜色,型号,座位数和行为:行驶,速度

  • 本文向大家介绍学习Scala和函数式编程的原因,包括了学习Scala和函数式编程的原因的使用技巧和注意事项,需要的朋友参考一下 Scala是Scala,Groovy和Kotlin中最强大的Java替代品之一。Scala是一种JVM语言,是我最喜欢的程序员,您需要从Java切换到它,因为它与Java相似。 使之成为首选编程语言的最重要的事情是它同时支持函数式编程和面向对象的编程。函数式编程使其可以利

  • 问题内容: 命令可以运行已编译的Scala代码吗?如果是这样,我们为什么要使用排他命令? 问题答案: 如果您在类路径中包含了Scala的所有必要运行时库(scala-library.jar,scala-swing.jar …),则可以运行Scala生成的字节代码。scala命令自动执行此操作,并支持特定于Scala的命令行参数。