Добавление списка [база данных]

Я являюсь новым с Scala, и я пишу простой RSS-ридер. У меня есть менеджер по классу для управления подачей и содержанием.

package lib
import scala.xml._
import java.net.URL
import net.liftweb.couchdb.{CouchDB, Database}
import dispatch.{Http, StatusCode}

/**
 * @author smix
 * 
 * Feeds manager
 */
object Manager {
 var db = List[Database]()
 /*
  * Initialize CouchDb databases
  */
 def init = {
  this.appendDb(new Database("myserver.com", 5984, "content"))
 }

 /*
  * Append a new database to the databases list
  */
 private def appendDb(database: Database) : Unit = {
  database :: db 
  // Strange exception if database has been already created
  /* try {
   this.db.head.createIfNotCreated(new Http())
  } catch {
   case e:java.lang.NoClassDefFoundError => {}
  } */
 }

 /*
  * Fetch articles from feed by url
  */
    def fetchItems(feedUrl: String): List[scala.xml.Elem] = { 
   val rssFeed = XML.load( (new URL(feedUrl)).openConnection.getInputStream )
   val items = rssFeed \ "channel" \ "item"

   val articles: List[scala.xml.Elem] = List()
   for(item <- items) {
      item :: articles
   }

   articles
    }

}

Я хочу сохранить содержание в CouchDb. У меня должен быть список баз данных дивана (подача, статьи, и т.д....). Я записал класс, но когда я называю appendDb, я получаю ошибку:

Exception in thread "main" java.lang.NoClassDefFoundError: lib/Manager$
 at collector$.main(collector.scala:5)
 at collector.main(collector.scala)
Caused by: java.lang.ClassNotFoundException: lib.Manager$
 at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
 ... 2 more

Когда я rewrited db определение: var db = List[Int]() и первая строка appendDb: 1 :: this.db проект хорошо работал... Странно.

Кроме того, интересно, почему я получаю исключение, когда я звоню, createIfNotCreated для существующей базы данных (прокомментировал блок try-catch в appendDb).

1
задан Andrey Kuznetsov 1 August 2010 в 03:01
поделиться

1 ответ

Исключение указывает на то, что вам не хватает некоторых классов (предположительно, одного или нескольких файлов JAR) при запуске программы, хотя они либо не имеют отношения к ее компиляции, либо являются доступно тогда.

Также следует отметить, что первая строка в appendDb ничего не выполняет. Он строит новый список , помещая базу данных в начало списка List , на который ссылается db , но полученное значение отбрасывается. Возможно, вы имели в виду следующее:

  db = database :: db
2
ответ дан 2 September 2019 в 22:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: