3

我从sbt android plugin成功构建了 Scala-only 项目模板。接下来,我尝试将一些 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

感谢 Yifan Yu 在 Google Groups 的回复,看来是sbt Android 插件的一个 bug 。感谢 Jan Berkel,修复了此版本中的错误。

您有一个名为 的包路径com.mydomain.myproject.android,因此当编译器尝试TR.scala在“com.mydomain.myproject”中进行编译时,它会使编译器感到困惑,因为它将“android.whatever”视为相对路径。该插件尝试将其_root_.添加到它生成的Activity 源代码中,但它忘记了这样做TR.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

其他导入之前。这意味着以下两行将是等效的:

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 回答