Относительный пакетный пакет Scala - PullRequest
8 голосов
/ 29 октября 2011

У меня есть многопроектное рабочее пространство Scala в Eclipse. Я думаю, что меня раздражает отсутствие понимания того, как Scala импортирует пакеты, но, потратив больше времени, чем я хочу признаться, в поисках решения, я не могу понять это. Я воссоздал проблему в простой настройке проекта 2.

Проект 1: com.foo.matmatics содержит простой класс Vector

Содержит один файл:

package com.foo.mathematics    

class Vector2D(x : Double, y : Double) {



  def length = math.sqrt(x*x + y*y)

}

Проект 2: com.foo.analysis

package com.foo.analysis

import com.foo.mathematics.Vector2D



class Frame(xAxis : Vector2D, yAxis : Vector2D) {



}

Eclipse показывает ошибку в строке импорта. Я получаю сообщение об ошибке: Объектная математика не является членом пакета com.foo.

В виде структуры мое утверждение импорта говорит следующее:

com.foo.analysis.<error: <none>>.Vector2D

Я попытался изменить импорт на:

import mathematics.Vector2D

import _root_.com.foo.mathematics.Vector2D

ни один не работает ...

Чего мне не хватает?

1 Ответ

6 голосов
/ 29 октября 2011

Оба import com.foo.mathmatics.Vector2D и import _root_.com.foo.mathmatics.Vector2D должны быть в порядке.Скорее всего, вы либо не добавили первый проект в путь сборки второго (см. Build Path> Configure Build Path в контекстном меню), либо вам нужно очистить второй проект (Project> Build Clean) послевнесение изменений в первый проект.

(Кроме того, mathmatics выглядит как опечатка для mathematics, поэтому дважды проверьте, чтобы у вас действительно было одинаковое имя в обоих местах.)

Относительныйимпорт пакетов не входит в это, они просто означают, что вы могли бы написать это так:

package com.foo
package analysis
import mathmatics.Vector2D

class Frame(xAxis : Vector2D, yAxis : Vector2D) {

}
...