我从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
答案 0 :(得分:2)
感谢Yifan Yu在Google网上论坛中的response,它似乎是sbt Android plugin中的错误。感谢Jan Berkel修复this release中的错误。
您有一个名为
com.mydomain.myproject.android
的包路径,所以 当编译器尝试编译TR.scala
时,它会让编译器感到困惑 'com.mydomain.myproject',因为它认为'android.whatever'是一个 相对路径。该插件会尝试将_root_.
添加到Activity
它生成的源代码,但忘记了TR.scala.
答案 1 :(得分:1)
嗯,你没有确切地说你做了什么(“添加一些Java资源”?怎么样?剪切和粘贴代码?哪些代码?哪里?什么?),这使得很难给出一个好的答案。但是,从错误消息中解释实际上很简单。
执行“import android.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
的包。