sbt: объект приложение не является членом пакета - PullRequest
3 голосов
/ 12 октября 2011

Я успешно создал шаблон проекта только для Scala из плагина sbt android .Затем я попытался добавить некоторые исходники 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

Ответы [ 2 ]

2 голосов
/ 13 октября 2011

Благодаря ответу Ифаня Ю в группах Google, это похоже на ошибку в sbt Android-плагине . Спасибо Jan Berkel за исправление ошибки в этой версии .

У вас есть путь к пакету с именем com.mydomain.myproject.android, поэтому это сбивает с толку компилятор, когда он пытается скомпилировать TR.scala в «com.mydomain.myproject», потому что он думает об «android.whither» как относительный путь. Плагин пытается добавить _root_. к Activity источник, который он генерирует, но забывает сделать это для TR.scala.

1 голос
/ 13 октября 2011

Ну, вы не сказали точно, что сделали («добавили некоторые исходники Java»? Как это «вырезать и вставить код», какой код? Где? Что?), Что затрудняет дать хороший ответ. Однако объяснение на самом деле просто из сообщения об ошибке.

Выдает ошибку, когда вы делаете "import android.app.Activity". Это могут быть источники Java, о которых вы говорили? Ну, я не знаю. Но я знаю, что вы либо импортировали, либо находитесь внутри пакета com.mydomain.myproject.android, потому что так говорится в сообщении. Другими словами, у вас есть одно из следующего:

package com.mydomain.myproject.android
import com.mydomain.myproject._
import com.mydomain.myproject.android

до другой импорт. Это означает, что следующие две строки будут эквивалентны:

* * 1010

Что, вероятно, не , что вы хотите. Вы хотели, чтобы android.app.Activity был абсолютной ссылкой, верно? Ну, это не так. Вы можете сделать это абсолютно так:

import _root_.android.app.Activity

Или вы можете просто не иметь пакета с именем android в своем проекте.

...