nie można rozpoznać symbolu javafx.application w środowisku IntelliJ Idea IDE

81

Próbowałem stworzyć aplikację JavaFX w IntelliJ Idea IDE, ale otrzymałem błąd kompilacji, który powiedział:

java: pakiet javafx.application nie istnieje.

Zmieniłem Project SDK i Project Language Level na Java 8, ponownie załadowałem projekt, ale to nie pomogło. Następnie w ustawieniach sprawdziłem czy wtyczka JavaFX jest włączona.

Wyszukiwanie w Google i StackOverflow nie dało mi więcej pomysłów na to, co jest nie tak. Z góry dziękuję za pomoc.

PS Używam IntelliJ Idea 14.0 z java8.1.0_25 na archlinux OS.

rob111
źródło
Czy kompilujesz przeciwko jdk czy jre? upewnij się, że to jdk.
Stav Saad

Odpowiedzi:

97

Jak wskazano tutaj , JavaFX nie jest już zawarta w openjdk.

Więc sprawdź, czy masz <Java SDK root>/jre/lib/ext/jfxrt.jarna swojej ścieżce klasowej pod Project Structure -> SDKs -> 1.x -> Classpath? Jeśli nie, to może być powód. Spróbuj go dodać i sprawdź, czy to rozwiązuje problem, np. W systemie Ubuntu, zainstaluj, a następnie pakiet openjfx z rozszerzeniem sudo apt-get install openjfx.

Ryan J.
źródło
Nie mam tego pliku w Classpath ani w folderze głównym SDK. Nie wiem, dlaczego moja java, którą zainstalowałem z AUR, nie ma pliku jfxrt.jar.
rob111
Radziłbym udać się do Oracle i uzyskać odpowiednią dystrybucję dla swojego systemu operacyjnego.
Ryan J
2
Dodałem plik jfxrt.jar do odpowiedniego katalogu i dodałem do zestawów SDK. Teraz moje IDE rozpoznaje javafx, ALE otrzymałem wyjątek środowiska uruchomieniowego Inicjalizacja urządzenia graficznego nie powiodła się dla: es2, sw Błąd inicjalizacji QuantumRenderer: nie znaleziono odpowiedniego potoku java.lang.RuntimeException: java.lang.RuntimeException: Błąd podczas inicjowania QuantumRenderer: nie znaleziono odpowiedniego potoku, co mam teraz?
rob111
Niestety wygląda na to, że masz problem z konfiguracją systemu ... Nie jestem pewien, co możesz zrobić, aby to naprawić, ponieważ nie wiem, jak niestandardowa jest twoja konkretna dystrybucja Linuksa.
Ryan J
24

To powinno być Twoje idealne rozwiązanie. Spróbuj i ciesz się. Jeśli jakieś polecenie nie działa poprawnie, oznacza to, że jeśli pojawi się jakiś błąd, spróbuj rozwiązać go samodzielnie. Dałem ci najważniejszą rzecz, której potrzebujesz. Jeśli Twoja aplikacja znajduje się w innym miejscu lub architektura Twojego systemu jest inna, rozwiąż ten problem samodzielnie. Bardzo łatwo to zrobić. Po prostu postępuj zgodnie z moim rozwiązaniem.

Krok 0:

sudo apt-get install openjdk-8-jre

Krok 1

sudo apt-get install openjfx

Krok 2:

sudo cp /usr/share/java/openjfx/jre/lib/ext/* /usr/lib/jvm/java-1.8.0-openjdk-amd64/lib

Krok 3:

sudo cp /usr/share/java/openjfx/lib/* /usr/lib/jvm/java-1.8.0-openjdk-amd64/lib

Krok 4:

sudo chmod 777 -R /usr/lib/jvm/java-1.8.0-openjdk-amd64

teraz otwórz nowy projekt lub przebuduj projekt. Powodzenia.

Himel Rana
źródło
1
OP używa Arch Linux, który nie ma APT
xdevs 23
4
sudo chmod 777 -R /usr/lib/jvm/java-1.8.0-openjdk-amd64to zły pomysł! Nie rób tego!
Karl Richter
Karl Richter. Ponieważ jesteś programistą. Możesz to zrobić dla celów programistycznych. Przyznanie pozwolenia 777 jest szkodliwe dla biznesu i zwykłego użytkownika. Ponieważ jesteś programistą, nie powinno to stanowić problemu. Wiesz dobrze o swoim systemie operacyjnym. >> Również jeśli chcesz, możesz zrobić ciasto, badając więcej informacji na temat tego problemu. Dziękuję Ci.
Himel Rana
5
Wiedza o systemie operacyjnym jest ironicznym stwierdzeniem, gdy właśnie zmieniłeś uprawnienia w systemie w sposób, który umożliwia rootkitom i wirusom swobodne przepisywanie pliku. Nie ma znaczenia, co myślisz, że wiesz. NIGDY nie wykonuj chmod 777 na plikach systemowych. Prawidłowe uprawnienia dla tego folderu to 644. Prosty ls -lhato pokaże.
Routhinator
16

Można użyć jednego, że pochodzi z IntelliJ: <intellij>/jre64/lib/ext/jfxrt.jar.

Rok Strniša
źródło
13

Musisz pobrać pakiet java-openjfx z oficjalnych repozytoriów Arch Linux. (Upewnij się również, że masz pakiet openjdk8-openjdk). Po wykonaniu tej czynności otwórz swój projekt w Intellij i przejdź do Project-Structure -> SDKs -> 1.8 -> Classpath i spróbuj usunąć stary JDK, który miałeś i kliknąć katalog dla nowego JDK, który będzie teraz zawierał jfxrt.jar.

patterkyle
źródło
5
To mówi mu dokładnie, co musi zrobić, aby Intellij znalazł pakiet, którego obecnie nie znajduje. Jak to nie jest odpowiedzią na jego pytanie?
patterkyle
2

Możesz mieć niższy poziom języka projektu niż JDK.

Sprawdź, czy: „Struktura projektu / projekt / Projekt-> poziom języka” jest niższy niż Twój JDK. Miałem ten sam problem z JDK 9, a poziom języka był domyślnie ustawiony na 6.

Ustawiłem poziom języka projektu na 9 i po tym wszystko działało dobrze.

Możesz mieć ten sam problem.

Raphael S.
źródło
2

Inny sposób rozwiązania problemu: Kliknij lewym przyciskiem myszy folder projektu w strukturze projektu po lewej stronie, a następnie na liście akcji kliknij „Otwórz ustawienia modułu” W nowych oknach kliknij SDK, które jest w menu tytuł "Ustawienia platformy" Następnie sprawdź na liście "Ścieżka klas", czy możesz znaleźć ścieżkę do wtyczki jfxrt. Jeśli nie, kliknij symbol + po prawej stronie i wybierz repertorium wtyczki jfxrt (C: \ Program Files \ Java \ jdk1.8.0 \ jre \ lib \ ext \ jfxrt.jar na moim pulpicie)

user10899964
źródło
2

Przykładowa aplikacja Java:

Wstawiam tutaj moją odpowiedź z innego pytania , ponieważ jest ona powiązana i wydaje się, że rozwiązuje problem w pytaniu.

Oto mój przykładowy projekt z OpenJDK 12, JavaFX 12 i Gradle 5.4

  • Otwiera okno JavaFX z tytułem „Hello World!”
  • Potrafi zbudować działający, działający plik dystrybucyjny zip (system Windows do przetestowania)
  • Możliwość otwierania i uruchamiania w IntelliJ bez dodatkowej konfiguracji
  • Może działać z wiersza poleceń

Mam nadzieję, że ktoś uzna projekt Github za przydatny.

Instrukcje dotyczące sprawy Scala :

Dodatkowo poniżej znajdują się instrukcje, które działają z wtyczką Gradle Scala , ale wydają się nie działać z Javą . Zostawiam to tutaj na wypadek, gdyby ktoś inny również używał Scali, Gradle i JavaFX.

1) Jak wspomniano w pytaniu, należy skonfigurować wtyczkę JavaFX Gradle. Open JavaFX zawiera szczegółową dokumentację na ten temat

2) Dodatkowo musisz gdzieś rozpakować JavaFX SDK dla swojej platformy . UWAGA: pamiętaj, aby przewinąć w dół do sekcji Najnowsze wydania, gdzie jest JavaFX 12 (z jakiegoś powodu LTS 11 jest pierwszy).

3) Następnie w IntelliJ przejdź do File -> Project Structure -> Libraries, naciśnij przycisk ➕ i dodaj libfolder z rozpakowanego pakietu JavaFX SDK.

Aby uzyskać dłuższe instrukcje ze zrzutami ekranu, zapoznaj się z doskonałymi dokumentami Open JavaFX dla IntelliJ Nie mogę uzyskać działającego głębokiego łącza, więc wybierz, JavaFX and IntelliJa następnie Modular from IDEz nawigacji do dokumentów. Następnie przewiń w dół do kroku 3. Create a library. Jeśli masz problemy, rozważ sprawdzenie pozostałych kroków.

Trudno powiedzieć, czy to dokładnie ta sama sytuacja, co w pierwotnym pytaniu, ale wyglądało to na tyle podobnie, że tu wylądowałem, więc tutaj dodam swoje doświadczenie, aby pomóc innym.

Peter Lamberg
źródło
2

W IntelliJ Idea,

Sprawdź, czy następujące rzeczy są poprawnie skonfigurowane,

Krok 1:

Plik -> Ustawienia -> Wtyczki -> wyszukaj javafx i upewnij się, że jest włączony.

Krok 2: Struktura projektu (Ctrl + Shift + Alt + s)

Ustawienia platformy -> SDK -> 1.8 -> Upewnij się, że ścieżka klasy powinna mieć „jre \ lib \ ext \ jfxrt.jar”

Krok 3:

Project Settings -> Project -> Project SDK - należy wybrać 1.8

Ustawienia projektu -> Projekt -> Poziom języka projektu - skonfigurowany jako 8

Ubuntu: jeśli nie znaleziono jfxrt.jar w Twoich SDK, zainstaluj sudo apt-get install openjfx

Złóg
źródło
0

Miałem ten sam problem , w moim przypadku rozwiązałem go poprzez :

1) przechodząc do File -> Project Structure ----> Global libraries 2) szukając jfxrt.jar zawartego domyślnie w jdk1.8.0_241 \ lib (po zainstalowaniu) 3) kliknij + w lewym górnym rogu, aby dodać nowa biblioteka globalna i określiłem ścieżkę do mojego jdk1.8.0_241 Np .: (C: \ Program Files \ Java \ jdk1.8.0_241).

mam nadzieję, że to Ci pomoże

Djak celem
źródło