2011-10-29 14 views
8

私はEclipseで複数のプロジェクトのScalaワークスペースを持っています。私はScalaがパッケージをインポートする方法の理解が不足していると思いますが、解決策を探すのに気を使うよりも時間を費やした後、私はこのことを理解できません。私は単純な2つのプロジェクトセットアップで問題を再現しました。Scalaの相対的なパッケージのインポート

プロジェクト1:

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.mathematicsは

1つのファイルを含む単純なVectorクラスが含まれていますインポート行にエラーがあります。エラーメッセージは次のとおりです。オブジェクト数学はパッケージcom.fooのメンバーではありません。アウトラインビューで

、私のimport文はこれを言う:

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

私が輸入を変更しようとしている:私は何...

import mathematics.Vector2D 

import _root_.com.foo.mathematics.Vector2D 

どちらも作品

を行方不明?

+3

すべてのプロジェクトを消去してみてください。プロジェクト1をビルドし、次にプロジェクト2でインポート行を削除し、 'import com.fo [CTRL-SPACE]'と打ち込みます。完了しますか? CTRL-SPACEをもう一度入力すると、「数学」と「分析」が表示されますか? – huynhjl

+0

私はそれを重い手で_root_の使い方で修正することができました。 – fbl

答えて

6

import com.foo.mathmatics.Vector2Dimport _root_.com.foo.mathmatics.Vector2Dの両方が問題ありません。ほとんどの場合、最初のプロジェクトを2番目のビルドパスに追加していないか(コンテキストメニューのBuild Path>Configure Build Pathを参照)、最初のプロジェクトを変更した後に2番目のプロジェクト(Project>Build Clean)を削除する必要があります。

(また、mathmaticsmathematics用タイプミスのように見えるので、あなたが本当に両方の場所で同じ名前を持つダブルチェック。)

相対パッケージの輸入は、彼らはちょうどあなたが書くことができる意味、それに付属していません。この方法:

package com.foo 
package analysis 
import mathmatics.Vector2D 

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

} 
+0

ありがとうございます。私は私の元の質問(午前2時に質問をするのは危険)にミスタイプしましたが、コードは問題ありませんでした。プロジェクトのすべての.scalaファイルのすべてのインポートに、意図的に_root_インポートを適用することで、私の「本当の」プロジェクトの問題を解決することができました。いくつかのクリーン/ビルドサイクルの後、私はそれが働いていると思います。私が時折行う必要があったもう一つのことは、ビルドパスから依存ライブラリを削除し、それを再度追加することでした。それがなぜ助けられたのかは分かりませんが、それはしました。 – fbl

+0

1)普通の逆URL規約(あなたがやっていると思われる)に従い、2)他のパッケージにネストされた 'com'、' org'などのパッケージがない場合、 '_root_'は必要ありません。 Strange ...最新のScala IDE(2.0 beta 11)をお持ちですか?私がこのような依存関係の問題を抱えていた最後の時間はかなり前のバージョンでした。 –

+0

私は最新のScala IDEとEclipseのバージョンを持っています。 '_root_'は、あなたが何をする必要があるかを知っていれば、それほど悪くはありません。助けてくれてありがとう。 – fbl

関連する問題