3

sbt android pluginから Scala 専用のプロジェクト テンプレートを正常にビルドしました。次に、いくつかの Java ソースをプロジェクトに追加しようとしましたが、TR.scala で次のエラーが発生しました。TR.scala は、Java ソースから生成されたファイルです。

[info] Compiling 2 Scala sources and 5 Java sources to D:\Workspaces\MyProject\my-project\target\scala-2.9.0-1\classes...
[error] D:\Workspaces\MyProject\my-project\target\src_managed\main\scala\com\mydomain\myproject\TR.scala:2: object app is not a member of package com.mydomain.myproject.android
[error] import android.app.Activity
[error]                ^
[error] D:\Workspaces\MyProject\my-project\target\src_managed\main\scala\com\mydomain\myproject\TR.scala:3: object view is not a member of package com.mydomain.myproject.android
[error] import android.view.View
[error]                ^
[error] two errors found
[error] {file:/D:/Workspaces/MyProject/my-project/}My Project/compile:compile: Compilation failed
[error] Total time: 5 s, completed Oct 12, 2011 11:20:55 AM
4

2 に答える 2

2

Google グループでの Yifan Yu の回答のおかげで、これはsbt Android プラグインのバグのようです。このリリースでバグを修正してくれた Jan Berkel に感謝します。

という名前のパッケージ パスがあるため、「com.mydomain.myproject」でcom.mydomain.myproject.androidコンパイルしようとするとコンパイラが混乱します。これは、「android.whatever」を相対パスと見なすためです。プラグインは、生成するソースTR.scalaに追加しようとし ますが、そうするのを忘れています_root_.ActivityTR.scala.

于 2011-10-13T03:04:55.797 に答える
1

何をしたか正確に述べていませんでした (「Java ソースを追加」? それはどう? 切り貼りしたコード? どのコード? どこ? 何を?)。しかし、実際にはエラーメッセージから説明は簡単です。

「android.app.Activity のインポート」を実行するとエラーが発生します。それがあなたが話した Java ソースではないでしょうか? まあ、私は知りません。com.mydomain.myproject.androidしかし、メッセージにそう書かれているので、あなたがパッケージをインポートしたか、パッケージの中にいることはわかっています。つまり、次のいずれかを持っています。

package com.mydomain.myproject.android
import com.mydomain.myproject._
import com.mydomain.myproject.android

他のインポートの前に。つまり、次の 2 行は同等になります。

import android.app.Activity
import com.mydomain.myproject.android.app.Activity

これはおそらくあなたが望むものではありません。android.app.Activityあなたは絶対的な参考になりたかったですよね?そうではありません。次のように絶対にすることができます:

import _root_.android.app.Activity

または、プロジェクトで名前を付けたパッケージを持たないこともできandroidます。

于 2011-10-12T21:08:41.060 に答える