2010-03-29 15 views
18

Z powodzeniem zaimplementowałem i uruchomiłem kilka samouczków Scala w środowisku Eclipse za pomocą wtyczki Scala. Potem nagle Próbowałem skompilować i uruchomić przykład, i ten błąd pojawił się:noClassDefFoundError przy użyciu wtyczki Scala dla Eclipse

Exception in thread "main" java.lang.NoClassDefFoundError: hello/HelloWorld 
Caused by: java.lang.ClassNotFoundException: hello.HelloWorld 
at java.net.URLClassLoader$1.run(URLClassLoader.java:200) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:315) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:250) 
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:398) 

Po tym momencie nie mógł już uruchamiać żadnych programów Scala w Eclipse. Próbowałem oczyścić i zrekonstruować mój projekt, zamknąć i ponownie otworzyć projekt oraz zamknąć i ponownie otworzyć Eclipse.

Eclipse numer wersji 3.5.2 i Scala plugin 2.8.0

Oto oryginalny kod:

package hello 

object HelloWorld { 
def main(args: Array[String]){ 
    println("hello world") 
} 
} 
+0

Czy w $ PROJECT/bin/hello znajduje się plik HelloWorld.class? (Możesz użyć widoku "Navigator", aby sprawdzić). –

Odpowiedz

10

Jeśli widzisz to przy próbie uruchomienia jako aplikacja Scala to najprawdopodobniej Wyjaśnienie jest takie, że twój projekt nie został skompilowany i nie wygenerowano plików klas. Sprawdź, czy tak jest: spójrz na folder wyjściowy swojego projektu dla hello/HelloWorld.class.

Jeśli twój projekt się nie skompilował, może to być spowodowane pomyłką, którą przegapiłeś (i jeśli ten błąd nie jest zgłaszany w widoku problemów, który może być błędem, w takim przypadku otwórz bilet na Trac) lub dlatego, że wyłączyłeś automatyczne kompilacje i nie wykonałeś ręcznej kompilacji projektu.

+0

W folderze wyjściowym nie było żadnych plików. Niestety wczoraj ponownie zainstalowałem moje środowisko, aby wszystko działało, więc nie mogę dalej rozwiązywać problemów. –

+0

Wydawało mi się, że konfiguracje Run były w jakiś sposób uszkodzone lub nie zostały ustawione poprawnie, ale znalazłem "rozwiązanie" - patrz poniżej: –

+1

Miałem ten sam problem: HelloWorld $ .class był w folderze wyjściowym, ale bez HelloWorld. klasa. Czyszczenie rozwiązało problem. – thSoft

2

Po uruchomieniu "czystego" nie odłącza się Eclipse, następnie próbuję zapisać moją pracę, wyjdę z Eclipse i ponownie uruchomię. To zwykle sprawia, że ​​wszystko idzie znowu, ale nie zawsze. Kilka razy musiałem aktualizować wtyczkę Scala z nowszą wersją (używam najnowszego nocnego), aby znów wszystko działało. Wątpię, aby to działało, ponieważ nowa wtyczka naprawiła błąd, ale raczej spodziewam się, że ładowanie nowej wtyczki daje systemowi Eclipse-Scala "całkowity reset", który usuwa go.

3

Miałem ten sam problem. Projekt nie kompiluje się, ale nie ma podświetlonych błędów, a AFAIK - kod jest OK. Wydaje się, że jest to problem z konfiguracjami Run.

Rozwiązanie 1: Usunięcie istniejącej konfiguracji Run dla obiektu i utworzyć nowy

Rozwiązanie 2: Tworzenie nowego obiektu i wyciąć/wklej cały kod do tego pliku

0

I przeniosłem moją jedyną klasę/obiekt/aplikację do paczki, ale nie dodałem deklaracji package.

sbt skompilowany i uruchomiony dobrze; Zaćmienie nie będzie miało wartości

Usunięcie deklaracji package na górze pliku.

Wtyczka Scala 2.8.3; nie wystąpił błąd kompilacji

1

Otrzymałem ten problem w projekcie, który połączył pliki .java & .scala. Rozwiązanie dla mnie było:

  1. usunąć wszystkie pliki .java
  2. Edycja kodu Scala, ile potrzeba więc kompiluje bez nich.
  3. Dodaj pliki .java z powrotem.
  4. Edytuj kod scala z powrotem.

Inne podane tutaj rozwiązania nie działają dla mnie. Próbowałem: wyczyść projekt, zrestartuj Eclipse, zamknij- & - otwierając projekt, tworząc nowy plik .scala. Brak przyjemności.

Używam Eclipse 3.7 (najnowsza stabilna), Scala IDE 2.0.0 i Scala 2.9 na systemie Ubuntu Linux 11.10.

Objawy w moim przypadku były:

  • Mój projekt był pracy, ale potem przestał kompilacji bez wyraźnego powodu. IDE nie pokazał żadnych błędów kompilacji dla plików .scala, ale nie było żadnych plików .class w katalogu wyjściowym & Mam NoClassDefError jeśli próbowałem uruchomić cokolwiek.
  • Jeśli utworzono celowy błąd w pliku .scala, został on wykryty jako błąd kompilacji.
  • Pliki .java rejestrowały błędy z powodu brakujących klas scala.

Przypuszczam, że prawdopodobnie istnieje błąd bootowania w jakimś miejscu wtyczki IDE dla miksów .java/.scala. Zrobiłem hybrydowe projekty z tą konfiguracją bez problemów, więc jest uruchamiane tylko w niektórych sytuacjach. Nie wiem, czym jest wyzwalacz, ale po uruchomieniu nie ma fajnego rozwiązania.

0

Napotkano ten błąd również, ale po wykonaniu sugestii tutaj (czyszczenie, usuwanie Uruchom konfiguracji itp.), Zdałem sobie sprawę, że źle ustawiam obszar roboczy, dlatego klasa nie jest znaleziona.

Wskazaniem, że jest to problem, gdy ten sam błąd występuje podczas próby kompilacji projektu Java.

0

Napotkano ten błąd (kompilacja działała w sbt, ale nie powiodło się w czasie zaćmienia), gdy utworzyłem nowy obiekt pakietu o nazwie "common". Usunięcie obiektu pakietu w czasie zaćmienia spowodowało zniknięcie błędu kompilacji. Nic w tym nie było.

Używałem sbt-eclipse do zbudowania projektu zaćmienia. Używam scala eclipse 3.0.0-vfinal-20130326-1146-Typesafe.

Powiązane problemy