Смешивание файлов Scala и Java в проекте Eclipse - PullRequest
18 голосов
/ 15 декабря 2010

Я, вероятно, делаю что-то глупое, но не могу этого заметить.

Я установил Eclipse Helios (Helios, потому что я не мог получить поддержку Glassfish для корректной работы с использованием Gallileo) и ночную сборку плагина Scala Eclipse для Helios

Я создал проект Scala и добавил несколько файлов - смесь Java и Scala.

Все они кажутся синтаксически правильными - редактор Eclipse по крайней мере, кажется, знает, на каком языке находится каждый файл, и правильно сообщает о синтаксических ошибках, когда я их делаю - но файлы Java не могут найти классы, созданные в Scala. Кажется, сайт IDE предлагает, чтобы все это работало.

В каталоге bin нет файлов классов ни для одного из файлов Scala (есть файлы классов для каждого из классов, определенных в файлах Java), поэтому, по некоторым причинам, файлы Scala не создаются. Эти отсутствующие файлы классов объяснят, почему файлы Java не видят классы.

Что я пропустил? Как мне сказать Eclipse для создания этих файлов?

Ответы [ 2 ]

8 голосов
/ 15 декабря 2010

Я также использую Helios (потому что я перешел на 64-разрядную версию) и обнаружил, что плагин иногда ведет себя немного странно (хотя, честно говоря, не сильно отличается от него в Galileo).При смешивании Java и Scala, как вы обнаружили, это выглядело бы так, будто проблем нет, но не было бы скомпилированного кода.Или хуже, класс Java, зависящий от класса Scala, не будет компилироваться, потому что класс Scala не был скомпилирован - но он не будет компилироваться, пока все ошибки не будут удалены из проекта, что, конечно, не произойдет, пока он не скомпилируется... ug.

Я начал возиться с classpath и файлами проекта, и в конце концов заставил его работать, хотя я не могу точно сказать, почему.Клянусь, я изменил файл, затем изменил его обратно, и тогда он работал ??

В любом случае, вот мои файлы:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>xxxxxxxxxxxxx</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
    <buildCommand>
        <name>org.scala-ide.sdt.core.scalabuilder</name>
        <arguments>
        </arguments>
    </buildCommand>
</buildSpec>
<natures>
    <nature>org.eclipse.jdt.core.javanature</nature>
    <nature>org.scala-ide.sdt.core.scalanature</nature>
</natures>
</projectDescription>

и

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.scala-ide.sdt.launching.SCALA_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
<classpathentry kind="output" path="bin"/>
</classpath>

Критическая вещь, кажется, состоит в том, что SCALA_CONTAINER предшествует JRE_CONTAINER, но ... я бы не стал на это ставить.Порядок «натур» также может быть важен.

Он работает для меня уже неделю или две, с ежедневными обновлениями, так что ... * скрещенные пальцы *

7 голосов
/ 13 апреля 2012

Я заметил, что Eclipse-IDE иногда не компилирует мои файлы Scala при создании нового файла.Я должен выбрать проект в Package Explorer и обновить его (F5).Кроме того, вы можете изменить порядок компиляции (сначала Java или сначала Scala) в Eclipse, выбрав:

Window-> Preferences-> Scala-> Compiler-> Build Manager-> compileorder

...