2012-09-02 15 views
7

Tôi đã cố gắng cả ngày để biến ứng dụng javafx thành tệp jar. Tôi đang sử dụng bản cập nhật Java 1.7 7.Tạo tác Intellij Javafx - làm cách nào bạn tạo ra nó?

Oracle có some information, nhưng có vẻ như nó nằm rải rác khắp nơi. Intellij gần như làm công việc, nhưng tôi nhận được lỗi sau:

java.lang.NoClassDefFoundError: javafx/application/Application 

Mà dường như để nói rằng tôi cần phải nói với java nơi jfxrt.jar là ... Nếu tôi thêm jar này để thông tin classpath của tôi cho xây dựng manifest trong IntelliJ - ctrl + shift + alt + s -> Cổ vật -> tab Output Layout -> Lớp Path, sau đó tôi nhận được một lỗi:

Could not find or load main class com.downloadpinterest.code.Main 

Nó có vẻ lạ phải bao gồm jfxrt.jar trong đường dẫn lớp học của tôi mặc dù ...

Tôi cũng đã cố gắng tạo một tập lệnh kiến, nhưng tôi cảm thấy IntelliJ là 90 % của cách đó - và tôi chỉ cần một chút giúp đỡ để tìm ra lý do tại sao tôi cần phải bao gồm jfxrt.jar, và tại sao lớp chính của tôi không được tìm thấy (tôi đoán tôi cần phải thêm nó vào classpath bằng cách nào đó ?).

Có ai có thể cho tôi biết điều gì đang xảy ra không? Tôi đã có một gui cơ bản trước khi làm việc tốt, nhưng JavaFX dường như làm cho cuộc sống phức tạp!

Trả lời

4

Giả định của bạn là chính xác, bạn cần thêm JavaFX vào đường dẫn lớp.
Nó nằm ở [JDK]/jre/lib/jfxrt.jar.

Để cung cấp JavaFX khi chạy, bạn có thể bó nó với ứng dụng của bạn, minh họa trong này Oracle guidehoặc làm cho Java 7 Update 6 một yêu cầu cho ứng dụng của bạn, sau đó thêm [JAVA_HOME]/lib/jfxrt.jar vào classpath tại thuận tiện sớm nhất của ứng dụng.

Tùy chọn đầu tiên có nghĩa là có nhiều công việc hơn cho bạn, nhưng chắc chắn rằng tất cả người dùng đều có cùng phiên bản thư viện - và bạn cũng có thể gộp JRE, trong khi bạn đang ở đó. Phiên bản thứ hai không cung cấp sự chắc chắn này, nhưng dễ nhận ra hơn.

Là một biến thể cho tùy chọn thứ hai - nếu gói JRE thực sự có thể cho bạn - bạn cũng có thể gộp nó vào bản phân phối và sau đó bao gồm trình bao bọc shell-script/batch-file/executable để tạo chương trình sử dụng nó. Bằng cách đó, bạn nhận được tất cả sự chắc chắn từ tùy chọn tôi chỉ với một sự gia tăng vừa phải trong khó khăn từ tùy chọn II.

+0

Tôi nhận thấy khi tôi làm điều này Intellij chỉ cần thêm một dòng trong biểu hiện jar có classpath (nó không bó jfxrt trong jar của tôi). Điều này có vẻ như nó sẽ là một vấn đề khi những người khác tải xuống chương trình của tôi và cố gắng sử dụng nó - tức là một số người có mac, một số linux, một số cửa sổ và đường dẫn jfxrt.jar sẽ khác với những người khác nhau. Bạn có biết dù sao để giải quyết vấn đề này? –

+0

Tôi đã cập nhật câu trả lời để đề cập đến điều đó. –

+0

Cảm ơn, tôi đã hỏi oracle nếu có một ví dụ ant đầy đủ bất cứ nơi nào như tôi chỉ quản lý để có được cho đến nay tạo ra các kịch bản kiến. Tôi sẽ đăng một tài khoản nếu tôi tìm thấy một hoặc quản lý để tạo một tài khoản! –

4

Tôi gặp sự cố tương tự. Nhưng tôi thấy bài đăng trên blog này: Packaging JavaFX 2 Applications in IntelliJ IDEA 12.1 cho biết cách thực hiện trong Intellij 12.1

Rõ ràng IntelliJ có khả năng tạo ra một tạo phẩm "Ứng dụng JavaFX" đặc biệt. Nó tự động gói mọi thứ cần thiết trong tệp jar của bạn.

Các vấn đề liên quan