2010-12-15 2 views
18

Я, наверное, делаю что-то глупое, но я не могу его обнаружить.Смешивание файлов Scala и Java в проекте Eclipse

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

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

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

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

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

+0

Только в случае, проверьте для строителей в окне свойств проекта и убедитесь, что Scala проверена. – pedrofurla

+0

Еще одна дикая догадка, используйте разные исходные папки. Один для Scala и один для Java, никогда не возникало проблем с этим. – pedrofurla

+0

Спасибо. Проверено, что был выбран Scala builder и перенесены файлы Java в другую папку. Не помогло :( –

ответ

8

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

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

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

<?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, но ... Я бы не стал ставить на него либо , Порядок «натур» тоже может быть важен.

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

+0

Хорошо, попробовал. .Project был идентичен, .lasspath совсем другой, поэтому я изменил .classpath на тот, который вы указали выше, и ... нет разницы. Я удалил проект, повторно импортировал файлы и т. Д., Но он не работает :( –

+0

Мои ошибки были в другом порядке. К сожалению, изменение этого еще ничего не сделано. Оно все еще не создает класс fie –

+0

Я не могу думать что-то, что я делал для всей рабочей области. Кажется, ничего не применимо в .settings ... о, я использую Java 1.5 в этом проекте, если это имеет значение (в частности, 1.5.0_22). Сам Eclipse работает в версии 1.6. –

7

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

Window-> Настройки-> Scala-> от компилятора> Build Manager-> compileorder

+1

Привет, Стив, я использую m2e, вы знаете, как изменить порядок компиляции в pom, я могу увидеть только scala-compile-first вариант http://davidb.github.io/scala- Maven-плагин/example_java.html – ZiglioUK

Смежные вопросы