Как импортировать класс abc
из проекта main
, который будет использоваться другим классом в проекте web
в конфигурации multi-project sbt
?Scala несколько проектов SBT: объект не является членом пакета, не найден тип
После sbt compile
я получаю:
object abc is not a member of package com
not found: type abc
В то время как компиляция в IntelliJ успешно.
build.sbt
lazy val main = project.in(file("main"))
.settings(commonSettings: _*)
lazy val web = project.in(file("web"))
.settings(commonSettings: _*)
.enablePlugins(PlayScala)
.dependsOn(main)
lazy val root = (project in file("."))
.dependsOn(web, main)
.aggregate(web, main)
.settings(commonSettings: _*)
mainClass in root in Compile := (mainClass in web in Compile).value
fullClasspath in web in Runtime ++= (fullClasspath in main in Runtime).value
fullClasspath in root in Runtime ++= (fullClasspath in web in Runtime).value
Внутри веб-проект:
package com.company.web.controllers
import _root_.com.company.main.abc // also tried without root.
// Intellij recognizes the import successuflly
class Posts @Inject() (repo : abc) extends Controller { ..
Внутри главный проект:
package com.company.main
class abc @Inject()(){
Что может быть неправильным? Спасибо.
Вы можете публиковать полное сообщение об ошибке. Я подозреваю, что ты что-то творишь. Ваш код выше выглядит правильно. Вам не нужен 'fullClasspath ... ++ =', если у вас есть 'dependOn', это означает, что классы находятся на пути. Может ли быть, что '@ Inject' скрипит с помощью байтового кода? Если это затенение, вы можете переименовать импорт для целей тестирования, например 'import main. {Abc => ABC}' –
Спасибо за подсказку 'fullClasspath'. Убрали его и '@ Inject', но результат был таким же – Alex
« Хотя компиляция из IntelliJ успешна »- IntelliJ использует sbt для компиляции, поэтому либо вы имеете в виду, что компилятор презентации не указывает на ошибку, либо вы действительно строите проект ? Если это так, вы должны столкнуться с запуском sbt с терминала, возможно, с неправильным каталогом (собирает другую сборку/проект)? –