Подтвердить что ты не робот

Смешивание Scala и файлов Java в проекте Eclipse

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

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

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

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

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

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

4b9b3361

Ответ 1

Я также использую 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, но... я бы тоже не стал на него пари. Также может быть и порядок "натур".

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

Ответ 2

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

Окно- > Настройки → Scala → Компилятор- > Менеджер сборки- > компилятор