我成功地从sbt-android插件构建了仅限Scala的项目模板。接下来,我试图将一些Java源代码添加到我的项目中,但在TR.scala中出现了以下错误。TR.scala是从Java源代码生成的文件。
[info] Compiling 2 Scala sources and 5 Java sources to D:WorkspacesMyProjectmy-projecttargetscala-2.9.0-1classes...
[error] D:WorkspacesMyProjectmy-projecttargetsrc_managedmainscalacommydomainmyprojectTR.scala:2: object app is not a member of package com.mydomain.myproject.android
[error] import android.app.Activity
[error] ^
[error] D:WorkspacesMyProjectmy-projecttargetsrc_managedmainscalacommydomainmyprojectTR.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
由于Yifan Yu在谷歌群组中的回应,这似乎是sbt Android插件中的一个错误。感谢Jan Berkel修复了本版本中的错误。
您有一个名为
com.mydomain.myproject.android
的包路径,因此当编译器试图在中编译TR.scala
时,它会混淆编译器"com.mydomain.myproject",因为它认为"android.wanything"是相对路径。该插件尝试将_root_.
预先设置为Activity
它生成的源,但它忘记为TR.scala.
这样做
好吧,你没有确切地说你做了什么("添加一些Java源代码"?怎么样?剪切和粘贴代码?哪个代码?在哪里?什么?(,这让你很难给出一个好的答案。然而,从错误消息来看,解释其实很简单。
当你执行"importandroid.app.Activity"时,它会给出一个错误。这可能是你提到的Java源代码吗?嗯,我不知道。但我知道你要么已经导入,要么在com.mydomain.myproject.android
包内,因为它在消息中这样说。换句话说,你有以下其中一个:
package com.mydomain.myproject.android
import com.mydomain.myproject._
import com.mydomain.myproject.android
在其他导入之前。这意味着以下两条线将是等效的:
import android.app.Activity
import com.mydomain.myproject.android.app.Activity
这可能不是你想要的。你希望android.app.Activity
是一个绝对的参考,对吧?事实并非如此。你可以这样做:
import _root_.android.app.Activity
或者你可以在你的项目中没有一个名为android
的包。