Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Scala's Relative Package Imports

I have a multi-project Scala workspace in eclipse. I think I'm getting hosed by my lack of understanding of the way Scala imports packages, but after spending more time than I care to admit looking for a solution, I can't figure this one out. I have recreated the problem in a simple 2 project setup.

Project 1: com.foo.mathematics contains a simple Vector class

Contains one file:

package com.foo.mathematics    

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



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

}

Project 2: com.foo.analysis

package com.foo.analysis

import com.foo.mathematics.Vector2D



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



}

Eclipse shows an error in the import line, The error message that I get is: Object mathematics is not a member of the package com.foo.

In the outline view, my import statement says this:

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

I have tried changing the import to:

import mathematics.Vector2D

import _root_.com.foo.mathematics.Vector2D

neither one works...

What am I missing?

like image 504
fbl Avatar asked Oct 29 '11 06:10

fbl


1 Answers

Both import com.foo.mathmatics.Vector2D and import _root_.com.foo.mathmatics.Vector2D should be fine. Most likely you either haven't added the first project to the build path of the second (see Build Path > Configure Build Path in the context menu), or need to clean the second project (Project > Build Clean) after making changes in the first project.

(Also, mathmatics looks like a typo for mathematics, so double check that you really have the same name in both places.)

Relative package imports don't come into it, they just mean you could write it this way:

package com.foo
package analysis
import mathmatics.Vector2D

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

}
like image 197
Alexey Romanov Avatar answered Oct 23 '22 03:10

Alexey Romanov