không thể giải quyết biểu tượng javafx.application trong IntelliJ Idea IDE


81

Tôi đã cố gắng tạo ứng dụng JavaFX trong IntelliJ Idea IDE nhưng tôi gặp lỗi biên dịch cho biết:

java: gói javafx.application không tồn tại.

Tôi đã thay đổi SDK dự án và Mức ngôn ngữ dự án thành Java 8, tải lại dự án nhưng không giúp được gì. Sau đó, tôi đã kiểm tra xem plugin JavaFX đã được bật trong cài đặt chưa.

Tìm kiếm trên Google và StackOverflow không cho tôi thêm ý tưởng về điều gì sai. Cảm ơn vì bất kỳ sự giúp đỡ trước.

PS Tôi đang sử dụng IntelliJ Idea 14.0 với java8.1.0_25 trên HĐH Archlinux.


Bạn đang biên dịch dựa trên jdk hay jre? đảm bảo rằng nó là jdk.
Stav Saad

Câu trả lời:


97

Như đã chỉ ra ở đây , JavaFX không còn được bao gồm trong openjdk.

Vì vậy, hãy kiểm tra, nếu bạn có <Java SDK root>/jre/lib/ext/jfxrt.jartrên classpath của mình dưới Project Structure -> SDKs -> 1.x -> Classpath? Nếu không, đó có thể là lý do tại sao. Hãy thử thêm nó và xem liệu điều đó có khắc phục được sự cố của bạn hay không, ví dụ: trên Ubuntu, hãy cài đặt rồi gói openjfx với sudo apt-get install openjfx.


Tôi không có tệp này trong Classpath và trong thư mục gốc SDK. Tôi không biết tại sao java của tôi mà tôi đã cài đặt từ AUR không có tệp jfxrt.jar.
rob111

Lời khuyên của tôi là đến với Oracle và nhận bản phân phối phù hợp cho hệ điều hành của bạn.
Ryan J

2
Tôi đã thêm tệp jfxrt.jar vào thư mục phê duyệt và thêm vào SDK. Bây giờ IDE của tôi nhận ra javafx NHƯNG tôi gặp lỗi khi khởi chạy Thiết bị đồ họa ngoại lệ không thành công cho: es2, sw Lỗi khi khởi tạo QuantumRenderer: không tìm thấy đường ống phù hợp java.lang.RuntimeException: java.lang.RuntimeException: Lỗi khi khởi tạo QuantumRenderer: không tìm thấy đường dẫn phù hợp tôi phải làm gì phải bây giờ?
rob111

Rất tiếc, có vẻ như bạn gặp sự cố cấu hình hệ thống ... Tôi không chắc bạn có thể làm gì để khắc phục điều đó vì tôi không biết bản phân phối Linux cụ thể của bạn tùy chỉnh như thế nào.
Ryan J

24

Đây sẽ là giải pháp hoàn hảo của bạn. Hãy thử và tận hưởng. Nếu một số lệnh không hoạt động bình thường có nghĩa là nếu bạn gặp bất kỳ lỗi nào, hãy cố gắng tự giải quyết. Tôi đã cung cấp cho bạn thứ chính mà bạn cần. Nếu ứng dụng của bạn ở một vị trí khác hoặc kiến ​​trúc hệ thống của bạn khác, hãy tự giải quyết. Nó rất dễ dàng để làm điều đó. Chỉ cần làm theo giải pháp nhất định của tôi.

Bước 0:

sudo apt-get install openjdk-8-jre

Bước 1

sudo apt-get install openjfx

Bước 2:

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

Bước 3:

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

Bước 4:

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

bây giờ hãy mở một dự án mới hoặc xây dựng lại dự án của bạn. Chúc may mắn.


1
OP đang sử dụng Arch Linux không có APT
xdevs23 Ngày

4
sudo chmod 777 -R /usr/lib/jvm/java-1.8.0-openjdk-amd64là một ý tưởng tồi! Đừng làm điều đó!
Karl Richter

Karl Richter. Khi bạn là một nhà phát triển. Đối với mục đích phát triển, bạn có thể làm điều này. Việc cấp quyền cho 777 có hại cho doanh nghiệp và người dùng nói chung. Vì bạn là một nhà phát triển, nó sẽ không gây ra bất kỳ vấn đề gì. Bạn biết rõ về hệ điều hành của mình. >> Ngoài ra nếu muốn bạn có thể đánh bột bằng cách nghiên cứu thêm về vấn đề này. Cảm ơn bạn.
Himel Rana,

5
Biết về hệ điều hành của bạn là một tuyên bố mỉa mai khi bạn vừa thay đổi quyền trên hệ thống của mình theo cách cho phép rootkit và vi rút tự do viết lại tệp. Không quan trọng bạn nghĩ gì bạn biết. KHÔNG BAO GIỜ thực hiện chmod 777 trên các tệp hệ thống. Các quyền thích hợp cho thư mục này là 644. Một đơn giản ls -lhasẽ cho thấy điều đó.
Routhinator

16

Bạn có thể sử dụng một trong đó đi kèm với IntelliJ: <intellij>/jre64/lib/ext/jfxrt.jar.


13

Bạn cần tải xuống gói java-openjfx từ kho lưu trữ chính thức của Arch Linux. (Ngoài ra, hãy đảm bảo rằng bạn có gói openjdk8-openjdk). Sau khi thực hiện việc đó, hãy mở dự án của bạn trong Intellij và đi tới Project-Structure -> SDKs -> 1.8 -> Classpath và thử xóa JDK cũ mà bạn đã có và nhấp vào thư mục cho JDK mới mà bây giờ sẽ chứa jfxrt.jar.


5
Điều này cho anh ta biết chính xác những gì anh ta cần làm để khiến Intellij tìm thấy gói mà nó hiện không tìm thấy. Làm thế nào mà không trả lời câu hỏi của mình?
patternkyle

2

Bạn có thể có trình độ ngôn ngữ dự án thấp hơn JDK của bạn.

Kiểm tra xem: "Projeckt structure / project / Project-> language level" có thấp hơn JDK của bạn không. Tôi đã gặp vấn đề tương tự với JDK 9 và cấp độ ngôn ngữ được đặt theo mặc định là 6.

Tôi đặt Mức ngôn ngữ dự án thành 9 và mọi thứ hoạt động tốt sau đó.

Bạn có thể có cùng một vấn đề.


2

Một cách khác để giải quyết vấn đề: Nhấp vào nút chuột trái vào thư mục dự án trong cấu trúc dự án ở bên trái và nhấp vào "mở cài đặt mô-đun" trong danh sách các hành động Trong cửa sổ mới, nhấp vào SDK ở dưới menu tiêu đề "Nền tảng thiết lập" Sau đó, kiểm tra danh sách "Classpath" nếu bạn có thể tìm thấy đường dẫn plugin jfxrt, nếu không, hãy nhấp vào biểu tượng + ở bên phải và chọn kho của plugin jfxrt (C: \ Program Files \ Java \ jdk1.8.0 \ jre \ lib \ ext \ jfxrt.jar trên máy tính của tôi)


2

Ứng dụng Java mẫu:

Tôi đang viết chéo câu trả lời của mình từ một câu hỏi khác ở đây vì nó có liên quan và dường như cũng giải quyết được vấn đề trong câu hỏi.

Đây là dự án ví dụ của tôi với OpenJDK 12, JavaFX 12 và Gradle 5.4

  • Mở cửa sổ JavaFX với tiêu đề "Hello World!"
  • Có thể xây dựng một tệp zip phân phối có thể chạy được (Windows sẽ được kiểm tra)
  • Có thể mở và chạy trong IntelliJ mà không cần cấu hình bổ sung
  • Có thể chạy từ dòng lệnh

Tôi hy vọng ai đó thấy dự án Github hữu ích.

Hướng dẫn cho trường hợp Scala :

Ngoài ra, bên dưới là các hướng dẫn hoạt động với plugin Gradle Scala , nhưng dường như không hoạt động với Java . Tôi để điều này ở đây trong trường hợp ai đó khác cũng đang sử dụng Scala, Gradle và JavaFX.

1) Như đã đề cập trong câu hỏi, cần thiết lập plugin JavaFX Gradle. Open JavaFX có tài liệu chi tiết về điều này

2) Ngoài ra, bạn cần JavaFX SDK cho nền tảng của mình được giải nén ở đâu đó. LƯU Ý: Đảm bảo cuộn xuống phần Bản phát hành mới nhất có JavaFX 12 (LTS 11 là lần đầu tiên vì một số lý do.)

3) Sau đó, trong IntelliJ, bạn đi tới File -> Project Structure -> Libraries, nhấn nút ➕ và thêm libthư mục từ JavaFX SDK đã giải nén.

Để có hướng dẫn dài hơn với ảnh chụp màn hình, hãy xem tài liệu Open JavaFX tuyệt vời dành cho IntelliJ. Tôi không thể tìm được liên kết sâu hoạt động, vì vậy hãy chọn JavaFX and IntelliJvà sau đó chọn Modular from IDEtừ điều hướng tài liệu. Sau đó, cuộn xuống bước 3. Create a library. Cân nhắc kiểm tra các bước khác nếu bạn gặp sự cố.

Rất khó để nói liệu đây có chính xác là tình huống giống như trong câu hỏi ban đầu hay không, nhưng nó trông tương tự như tôi đã hạ cánh ở đây, vì vậy tôi đang bổ sung kinh nghiệm của mình ở đây để giúp những người khác.


2

Trong IntelliJ Idea,

Kiểm tra xem những thứ sau có được định cấu hình đúng không,

Bước 1:

Tệp -> Cài đặt -> Plugin -> tìm kiếm javafx và đảm bảo rằng nó được bật.

Bước 2: Cấu trúc dự án (Ctrl + Shift + Alt + s)

Cài đặt nền tảng -> SDK -> 1.8 -> Đảm bảo Classpath phải có "jre \ lib \ ext \ jfxrt.jar"

Bước 3:

Cài đặt dự án -> Dự án -> SDK dự án - nên được chọn 1.8

Cài đặt Dự án -> Dự án -> Mức ngôn ngữ dự án - được định cấu hình là 8

Ubuntu: Nếu không tìm thấy jfxrt.jar trong SDK của bạn, hãy cài đặt sudo apt-get install openjfx


0

Tôi đã gặp vấn đề tương tự , trong trường hợp của tôi, tôi đã giải quyết bằng cách :

1) đi tới Tệp -> Cấu trúc dự án ----> Thư viện chung 2) tìm kiếm jfxrt.jar được bao gồm làm mặc định trong jdk1.8.0_241 \ lib (sau khi cài đặt) 3) nhấp vào + ở trên cùng bên trái để thêm thư viện toàn cầu mới và tôi đã chỉ định đường dẫn của jdk1.8.0_241 của tôi Ví dụ: (C: \ Program Files \ Java \ jdk1.8.0_241).

Tôi hy vọng điều này sẽ giúp bạn

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.