sbt:object应用程序不是包的成员



我成功地从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的包。

相关内容

  • 没有找到相关文章

最新更新