2010-12-15 8 views
18

Prawdopodobnie robię coś głupiego, ale nie mogę tego zauważyć.Mieszanie Scali i plików Java w projekcie Eclipse

Mam zainstalowane Eclipse Helios (Helios, bo nie mógł dostać GlassFish wsparcia działa poprawnie przy użyciu Galileo) i nightly build wtyczki Scala Eclipse Helios

Utworzyłem projekt Scala i dodanej niektóre pliki - połączenie Java i Scala.

Wszystkie wydają się poprawne pod względem składni - edytor Eclipse przynajmniej wydaje się wiedzieć, jakim językiem jest każdy plik i poprawnie raportuje błędy składni, gdy je robię - ale pliki Java nie mogą znaleźć klas utworzonych w Scali. Strona IDE wydaje się sugerować, że wszystko powinno po prostu działać.

W katalogu bin nie ma plików klas dla żadnego z plików Scala (istnieją pliki klas dla każdej klasy zdefiniowanej przez pliki Java), więc wydaje się, że z jakiegoś powodu pliki Scala nie są tworzone . Te brakujące pliki klas wyjaśniają, dlaczego pliki Java nie widzą tych klas.

Co przeoczyłem? Jak mogę powiedzieć Eclipse, aby zbudował te pliki?

+0

wszelki wypadek sprawdź konstruktorów w oknach właściwości projektu i upewnij się, że Scala jest zaznaczona. – pedrofurla

+0

Kolejne dzikie domysły, użyj różnych folderów źródłowych. Jeden dla Scali i jeden dla Java, nigdy nie miał żadnych problemów z robieniem tego. – pedrofurla

+0

Dzięki. Sprawdzono, czy został wybrany program Scala Builder i przeniesiono pliki Java do innego folderu. Nie pomogło :( –

Odpowiedz

8

Używam również Helios (ponieważ przeszedłem 64-bit) i okazało się, że wtyczka zachowuje się nieco dziwnie (choć szczerze mówiąc nie inaczej niż w Galileo). Podczas mieszania Javy i Scali, jak się domyślacie, wygląda na to, że nie ma problemu, ale nie byłoby skompilowanego kodu. Lub gorzej klasa Java zależna od klasy Scala nie skompilowałaby się, ponieważ klasa Scala nie została skompilowana - ale nie skompilowałaby się, dopóki wszystkie błędy nie zniknęły z projektu, co oczywiście nie byłoby, dopóki nie skompiluje ... ug.

Zacząłem majstrować przy ścieżkach klasy i projektu i ostatecznie udało mi się go uruchomić, ale nie potrafię powiedzieć dlaczego. Przysięgam, że zmieniłem plik, potem go zmieniłem, a potem zadziałało?

W każdym razie, tutaj są moje pliki:

<?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> 

i

<?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> 

Krytyczną rzeczą wydaje się, że SCALA_CONTAINER przyjść przed JRE_CONTAINER, ale ... ja nie stawiałbym na nim albo . Kolejność "natury" może być również ważna.

To pracuje dla mnie teraz przez tydzień lub dwa, codzienne aktualizacje, więc ... * * skrzyżowane palce-

+0

OK, spróbowałem tego. Projekt był identyczny, a .lasspath całkiem inny, więc zmieniłem .classpath na tę, którą podałeś powyżej i ... nie ma różnicy. Usunąłem projekt, ponownie zaimportowałem pliki itp. Ale to nie działa :( –

+0

Moje pomyłki natury były w innej kolejności Niestety zmiana tego jeszcze nic nie zrobiła.Nigdy nie buduje żadnej klasy fie –

+0

Nie mogę myśleć Cokolwiek robiłem w całej przestrzeni roboczej.Nie wydaje się, że jest to przydatne w ustawieniach ... oh, używam Java 1.5 w tym projekcie, jeśli to ma znaczenie (w szczególności 1.5.0_22) .Exlipse samo działa w wersji 1.6. –

7

Zauważyłem, że Eclipse IDE czasami nie skompilować moje pliki Scala kiedy Tworzę nowy plik. Muszę wybrać projekt w Eksploratorze pakietów i odświeżyć go (F5). Ponadto, można zmienić kolejność kompilacji (Java pierwszy vs. Scala pierwszego) w Eclipse, przechodząc do:

Okno-> Preferencje-> rozwiązanie dopasowane> Compiler-> Budowanie Manager-> compileorder

+1

Witam Steve, używam m2e, czy wiesz jak zmienić kolejność kompilacji w pom, widzę tylko opcję scala-compile-first http://davidb.github.io/scala- maven-plugin/example_java.html – ZiglioUK

Powiązane problemy