Актеры Scala в Scala 2.10 не распознаются

Недавно я обновился до Eclipse Juno, который также обновил мой Scala до версии 2.10. Я знаю, что Актеры сейчас устарели, но я все равно хотел бы их использовать. scala-actors.jar и scala-actors-migration.jar являются частью моего пути сборки Eclipse, однако при импорте я получаю «объектные актеры не являются членами пакета scala». Любые попытки повторно добавить библиотеку scala в проект также не помогли.

Mac OS X Lion с Eclipse Juno и Scala 2.10.

Некоторый код (отмечены ошибки XXX):

import scala.actors.Actor    XXX actors not found in scala
import scala.actors.Actor._  XXX actors not found in scala

  class Solver() extends Actor {   XXX Actor not found

    def act() {
      // Read file
      val source = io.Source.fromFile("src/labyrinth.txt", "utf-8")
      val lines = source.getLines.toList
      source.close()

      // Fill multidimensional array
      var labyrinth = Array.ofDim[Cell](lines.length, lines.apply(0).length)
      for (i <- 0 until lines.length) { // each line
        for (j <- 0 until lines.apply(0).length) { // each column
          labyrinth(i)(j) = new Cell(lines.apply(i).toList.apply(j)) // Fill array cell with character
        }
      }

      // Search for start
      for (k <- 0 until labyrinth(0).length) {
        if (labyrinth(0)(k).character.toString() == "?") {
          val start = new CheckCell(labyrinth, Array((1, k)), this).start // Kick off search
          while (true) {
            receive { XXX receive not found
              case FoundSolution =>  XXX FoundSolution not found
                Console.println("Pong: stop")
                start ! Stop  XXX Stop not found
                exit()
            }
          }
        }
      }

    }

  }

person johnny    schedule 15.01.2013    source источник
comment
Есть ли у вас какой-либо каталог под названием «scala», часть вашего пути к классам или исходный каталог? Похоже, что компилятор ищет не тот пакет scala, что может возникнуть из-за этого. Убедитесь, что вы сами не определили пакет 'scala', который может скрыть настоящий пакет!   -  person Iulian Dragos    schedule 28.01.2013


Ответы (1)


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

  • объявление package scala.blah в одном из ваших исходных файлов
  • исходная папка, содержащая scala в качестве подкаталога. Проверьте это в свойствах проекта, пути сборки и найдите исходные папки. Если вы используете соглашение maven, src/main/scala должен быть исходным каталогом (не просто src/ или src/main/).

Оба приведенных выше пункта могут затенить стандартный пакет scala и заменить его вашим объявлением (или каталогом), который, очевидно, не имеет типа Actor.

person Iulian Dragos    schedule 28.01.2013