Scala-проект как «подпроект» Java-проекта в Eclipse

1

Я пишу плагин Scala для Java-проекта. (По сути, я пишу класс Scala, который является подклассом класса Java. Он предназначен для запуска в приложении Java.) Я могу создать как проект Java, так и проект Scala в среде Scala/eclipse IDE, и я могу скажите одному из них обратиться к другому. Но когда я пытаюсь сказать каждому, чтобы обратиться к другому, я получаю сообщение об ошибке, говорящее, что у меня есть цикл в моем пути сборки. Когда я опускаю ссылку из проекта Java на проект Scala (но включаю ссылку из проекта Scala в проект Java), я могу написать подкласс и обратиться к требуемым Java-классам. Но теперь приложение Java не может видеть подкласс Scala. Есть ли хороший способ сделать что-то подобное?

Благодарю.

Теги:

2 ответа

2

В общем случае невозможно создать циклические ссылки между проектами. И это вполне естественно. Предположим, что у вас есть проекты "A" и "B", которые являются взаимозависимыми. Это означает, что для компиляции "B" вы должны иметь "A", уже скомпилированный. Но для компиляции "A" вам нужно "B" для компиляции. Как вы нарушаете такой цикл?

Тем не менее, в некоторых случаях это может быть возможно. Например, если в этих проектах нет циклов зависимостей между классами, то есть нет циклов зависимостей, таких как com.aX → com.bY → com.bZ → com.aX, тогда может быть возможно скомпилировать оба проекта в кусках, пока оба они не будут полностью скомпилированы. Но для этого потребуются сложные алгоритмы и система отслеживания зависимостей, которые просто не стоят того.

Плагиновые системы обычно структурированы следующим образом. Основной проект разделяется на две части: фактическая программа и ее API-интерфейс плагина (фактическая программа зависит от этого API). Тогда есть плагины, которые зависят от API, но не от основной программы. Основная программа теперь может иметь зависимости от плагинов, потому что теперь нет циклов.

+------------------------+
|                        |
+-> Plugin 1 --+      Project
|              |         |
+-> Plugin 2 --+--+      V
|              |  +-->  API
+-> Plugin 3 --+

Еще лучше связать программу с плагинами во время выполнения. Тогда нет никаких зависимостей во времени компиляции Project от плагинов. Система выполнения (например, OSGi или JBoss Modules или что-то нестандартное) становится ответственной за поиск и загрузку плагинов во время выполнения. Этот подход потребует некоторых изменений в системе сборки и способа запуска вашего проекта, но это может стоить того. Конечно, это зависит от ваших фактических потребностей.

1

Этот вопрос StackOverflow, похоже, решает мою проблему. Его решение - "Добавить Scala Nature" в проект Java: щелкните правой кнопкой мыши проект и выберите "Настроить"> "Добавить природу Scala". После этого можно включить файлы Scala в проект Java! Это.

  • 0
    Это просто делает ваш проект проектом Scala, и проекты Scala могут включать файлы Java.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню