Java sbt:对象应用程序不是包的成员
我成功地从中构建了仅Scala的项目模板。接下来,我尝试将一些Java源代码添加到我的项目中,在TR.scala中出现以下错误。TR.scala是从Java源代码生成的文件Java sbt:对象应用程序不是包的成员,java,android,scala,sbt,sbt-android-plugin,Java,Android,Scala,Sbt,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-projec
[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
好吧,你没有说你到底做了什么(“添加一些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
的软件包。多亏了Yifan Yu在Google Group中的贡献,它似乎是一个bug。感谢Jan Berkel修复了中的错误
您有一个名为com.mydomain.myproject.android的包路径,所以
当编译器试图在中编译TR.scala
时,会使编译器感到困惑
“com.mydomain.myproject”,因为它认为“android.whatever”是一个
相对路径。插件尝试将\u root.
前置到活动
它生成的源代码,但它忘记为TR.scala执行此操作。
几年后,我遇到了一个类似的错误,重新命名android软件包成功了。这是通过libgdx代码使用较新的androidsdk插件代码。