Edytor nie zawiera typu głównego

92

Po prostu przeglądałem przykładowy kod Scala w witrynie Scala, ale napotkałem irytujący błąd podczas próby uruchomienia.

Oto kod: http://www.scala-lang.org/node/45 . Po uruchomieniu go w Eclipse otrzymałem komunikat „Edytor nie zawiera typu głównego”, który uniemożliwia jego uruchomienie.

Czy jest coś, co muszę zrobić ... tj. Rozbić ten plik na wiele plików, czy co?

Helen Neely
źródło

Odpowiedzi:

37

Często mam ten problem z Eclipse i Scala. Pomaga, jeśli wyczyścisz obszar roboczy i przebudujesz projekt.

Czasami Eclipse nie rozpoznaje poprawnie, które pliki musi przekompilować :(

Edycja: Kod działa dobrze w Eclipse

nuriaion
źródło
4
Zrobiłem to samo doświadczenie. Poza tym czasami wymagało to ode mnie zamknięcia i otwarcia projektu.
Fabian Steeg
Dzięki @nuriaion i @Fabian, tak, ponowne otwarcie projektu sprawiło, że zadziałał. Jeszcze raz dziękuję za wskazówki.
Helen Neely,
3
@Helen W Eclipse => Project => Clean możesz wyczyścić projekty, odbudowa rozpocznie się automatycznie ... Więc nie musisz zamykać i ponownie otwierać projektu.
nuriaion
otwarcie i zamknięcie projektu scala dało mi: Wystąpiły błędy podczas kompilacji. Błąd podczas tworzenia instancji programu budującego „ch.epfl.lamp.sdt.core.scalabuilder”. Wtyczka „ch.epfl.lamp.sdt.core” nie mogła utworzyć wystąpienia klasy „scala.tools.eclipse.Builder”. Nie można zainicjować klasy scala.tools.eclipse.contribution.weaving.jdt.builderoptions.ScalaJavaBuilder Wtyczka „ch.epfl.lamp.sdt.core” nie mogła utworzyć instancji klasy „scala.tools.eclipse.Builder”. Nie można zainicjować klasy scala.tools.eclipse.contribution.weaving.jdt.builderoptions.ScalaJavaBuilder
Ustaman Sangat
87

W Eclipse upewnij się, że dodajesz folder źródłowy we właściwościach projektu -> ścieżka budowania java -> źródło. W przeciwnym razie funkcja main () może nie zostać uwzględniona w projekcie.

milkplus
źródło
Zwróć uwagę, że można to również osiągnąć, przeciągając i upuszczając pliki do „src” w widoku eksploratora folderów.
Max von Hippel
To rozwiązało mój problem, ale po zamknięciu i otwarciu projektu.
Powiedział
26

Musisz upewnić się, że twoje pliki .java znajdują się w folderze .src w eclipse. Miałem dokładnie ten sam problem, dopóki go nie odkryłem.

ultra99
źródło
26

Prostszym sposobem jest zamknięcie projektu i ponowne jego otwarcie.

statyczny
źródło
21

Po prostu upewnij się, że folder, w którym pracujesz, został dodany do ścieżki wbudowanej:

right-clicktwój folder -> build Path->Use as source Folder

i teraz powinien się maintam znaleźć .

kholofelo Maloma
źródło
6

Miałem ten sam problem. Próbowałem różnych rzeczy. I dowiedziałem się o tym

  1. Moje pliki .java nie zostały połączone, a
  2. nie zostały umieszczone w folderze „src”.

Rzeczy, które zrobiłem:

Właściwości projektu >> Ścieżka budowania Java >> Źródło

  • Usunięto oryginalny folder „src”, który był pusty za pomocą opcji „Usuń”
  • Dodano źródło zawierające moje źródłowe pliki .java przy użyciu opcji „Dodaj folder”

To rozwiązało błąd.

Anand Dhole
źródło
5

Możesz spróbować uruchomić główną funkcję z bocznego paska zaćmienia.

rozwiązanie

Fei
źródło
Kiedy to zrobić, mam komunikat o błędzie: <project root> [in Tut_RMI] does not exit. (Nazwa projektu to Tut_RMI) Czy ta nazwa projektu jest nieprawidłowa?
Casper
5
***

Po prostu zamknij i otwórz ponownie

*** twój projekt w zaćmieniu. Czasami pojawiają się problemy z łączeniem. To rozwiązało mój problem

Mohit Singh
źródło
3

Szybkie rozwiązanie:

Najpierw wyklucz pakiet: kliknij prawym przyciskiem myszy pakiet źródłowy >> Buduj ścieżkę >> Wyklucz

Następnie dołącz go z powrotem: Kliknij prawym przyciskiem myszy pakiet źródłowy >> Ścieżka budowania >> Uwzględnij

rwc
źródło
3

Powinieneś zrobić, stworzyć projekt Java, ale upewnij się, że umieściłeś ten plik w pliku pakietu tego projektu, w przeciwnym razie napotkasz ten sam błąd.

wprowadź opis obrazu tutaj

Absynt Strzykawka
źródło
2

Ten kod jest ważny. Czy próbowałeś skompilować go ręcznie za pomocą scalaka? Czy nazwałeś swój plik „książką adresową”, używając małych liter, jak nazwa obiektu?

Odkryłem również, że Eclipse z jakiegoś powodu ustawił główną klasę na „.addressbook” zamiast „addressbook”.

Daniel C. Sobral
źródło
Dzięki Daniel, tak, plik ma nazwę „książka adresowa”, wszystkie małe litery. Spróbuje ponownie otworzyć projekt, aby sprawdzić, czy to pomoże.
Helen Neely,
2

powinieneś stworzyć swój plik przez

wybierając po prawej stronie znajdziesz nazwę swojego pliku,

pod tym znajdziesz folder src, po kliknięciu prawym przyciskiem myszy wybierz -> opcja klasy

ich plik powinien zostać utworzony

vijaya
źródło
2

Upewnij się, że plik .java jest obecny w pakiecie str lub w innym pakiecie. Jeśli plik java z główną funkcją znajduje się poza wszystkimi pakietami, zgłaszany jest ten błąd.

Sahil Pruthi
źródło
2

W obliczu podobnego problemu rozwiązałem go, klikając prawym przyciskiem myszy główną metodę w widoku konspektu i uruchamiając jako aplikację Java.

Naresh
źródło
1

Ja też miałem ten problem. Rozwiązaniem jest upewnienie się, że eclipse utworzyło projekt jako projekt Java. Po prostu utwórz nowy projekt Java i skopiuj swoją klasę do folderu src (i zaimportuj ewentualne zależności). To powinno rozwiązać problem.

KullDox
źródło
Dzięki KullDox za komentarz. Długo rozwiązałem ten problem, ale mam nadzieję, że ktoś inny uzna te rozwiązania za pomocne.
Helen Neely
1

Prawidłowa odpowiedź brzmi: biblioteka Scala musi poprzedzać bibliotekę JRE w ścieżce budowania.

Idź do Java Buildpath> Order and Export i przenieś bibliotekę Scala na górę

MGM
źródło
1

Miałem ten problem z projektem Java, który zaimportowałem z systemu plików (pod Eclipse Helios). Oto wskazówka: kod src nie wydawał się w ogóle skompilowany, ponieważ nie pojawił się żaden katalog „bin”.

Musiałem stworzyć projekt Java od podstaw (za pomocą kreatora), a następnie porównać .project pliki niedziałających i działających projektów.

Projekt podający „Editor nie zawiera głównego typu” miał to jako „buildSpec” w pliku .project:

<buildSpec>
</buildSpec>

Ale działający projekt miał to jako „buildSpec”:

<buildSpec>
    <buildCommand>
        <name>org.eclipse.jdt.core.javabuilder</name>
        <arguments>
        </arguments>
    </buildCommand>
</buildSpec>

Skopiowałem to i zaimportowany projekt zadziałał.

Wiem, że moja odpowiedź dotyczy Javy, ale ten sam problem może dotyczyć Twojego projektu Scala.

user2704136
źródło
1

Być może utworzony plik znajduje się poza folderem src (źródłowym). Próba wywołania obiektu klasy (z pliku znajdującego się w folderze src) z pliku .java poza folderem źródłowym kończy się tym samym błędem. Skopiuj plik .java do folderu źródłowego, a następnie skompiluj go. Błąd zniknie.

Vamsi Tallapudi
źródło
1

Miałem ten sam problem. Miałem główną klasę z pakietu src w innym folderze. Przenoszę go i poprawiam folder i rozwiązałem

jacruz
źródło
1

uruchom "eclipse -clean -refresh" z linii poleceń. To rozwiązało problem, gdy wszystkie inne rozwiązania zawiodły.

MikeG
źródło
1

Może to być problem ze ścieżką kompilacji Java. Spróbuj wykonać poniższe kroki:

  1. Przejdź do właściwości projektu
  2. Przejdź do ścieżki budowania java
  3. Przejdź do zakładki Source i dodaj folder src projektu

To powinno rozwiązać problem.

AalekhG
źródło
1

Jeśli jest to projekt maven, sprawdź, czy plik java został utworzony w katalogu src / main / java

Jeśli nie otrzymujesz, zmień ścieżkę JRE i utwórz pliki java w powyższej strukturze folderów

ssomu
źródło
0

U mnie w Eclipse 3.6 ten problem występuje, gdy moja główna metoda nie jest publiczna. Spowodowałem problem, mając główną metodę, taką jak ta:

static void main(String[] args) 

Dubugger nie był w stanie sam tego wykryć. Jestem dość zaskoczony, że Eclipse to przeoczyło.

djangofan
źródło
0

W najgorszym przypadku - utwórz projekt jeszcze raz ze wszystkimi importami od początku. W moim przypadku żadna z pozostałych opcji nie zadziałała. Ten typ błędu wskazuje, że wystąpił błąd w ustawieniach projektu. Kiedyś udało mi się go rozwiązać, ale po zakończeniu dalszych prac błąd wrócił. Odtworzenie wszystkiego od początku pomogło mi zrozumieć i zoptymalizować niektóre linki, a teraz jestem pewien, że działa poprawnie.

Sergiu
źródło
0

Wykonaj poniższe kroki:

  1. Utwórz kopię zapasową wszystkich plików .java w innej lokalizacji
  2. usuń cały projekt java
  3. Utwórz nowy projekt java, klikając prawym przyciskiem myszy root i klikając nowy
  4. przywróć wszystkie pliki do nowej lokalizacji !!
Mani Kandan
źródło
0

Plik >> Importuj >> Istniejące projekty do obszaru roboczego >> Wybierz archiwum zarchiwizowane >> Przeglądaj i zlokalizuj plik >> Zakończ. Jeśli jest już zaimportowany w inny sposób, usuń go i wypróbuj w ten sposób. Miałem ten sam problem, dopóki tego nie spróbowałem.

Mikrofon
źródło
0

Jeszcze jedna rzecz do sprawdzenia: upewnij się, że plik źródłowy zawiera poprawną deklarację pakietu odpowiadającą podkatalogowi, w którym się znajduje. Błąd wspomniany przez OP można zobaczyć podczas próby uruchomienia „głównego typu” zadeklarowanego w pliku w podkatalogu, ale brak instrukcji pakietu.

Daniel Ashton
źródło
0

Mam ten problem po zmianie folderu źródłowego. Rozwiązaniem, które działało, jest po prostu edycja pliku i zapisanie go.

Hunsu
źródło
0

Spróbuj „Aktualizuj projekt”. Kiedy to zrobiłem, pojawiła się opcja Uruchom jako aplikację Java.

George Santhosh
źródło
0

W moim konkretnym przypadku „Hello World” przyczyną tego problemu był fakt, że moja main()metoda znajdowała się wewnątrz Scali class.

Podłożyłem main()metodę pod Scala objecti błąd zniknął.

Dzieje się tak, ponieważ Scala objectw kategoriach Java jest jednostką zawierającą tylko statyczne elementy członkowskie i metody.

Dlatego Java public static void main()w Scali musi być umieszczona pod object.

(Scala classnie może zawierać ładunków elektrostatycznych)

Vlad Bachurin
źródło