2013-10-23 32 views
6

Tôi đang sử dụng máy Linux Mint nơi tôi đã cài đặt phiên bản Java mới nhất (HotSpot VM 1.7.0_45) và sử dụng Gradle 1.8. Tôi cũng đã cài đặt Groovy, phiên bản 1.8.6, nhưng tôi nghĩ rằng không quan trọng như Gradle có groovy-all.jar của riêng nó.Gradle không tìm thấy các lớp JavaFX

Vấn đề của tôi là tôi không thể biên dịch dự án Groovy của tôi bằng cách sử dụng gradle vì các lớp JavaFX dường như không có trong classpath. Các lỗi là như thế này:

unable to resolve class javafx.scene.Node 
@ line 3, column 1. 
    import javafx.scene.Node 

Cuối cùng tôi cố định này bằng cách thêm khủng khiếp con đường mã hóa cứng sau vào phụ thuộc của tôi:

compile files("/usr/lib/jvm/java-7-oracle/jre/lib/jfxrt.jar") 

Có cách nào tốt hơn để thêm JavaFX để classpath biên soạn Gradle của quá rằng nó có thể nhìn thấy tất cả các dự án của tôi mà không cần phải thêm nó vào mỗi một trong số chúng?

Tôi đã thử tất cả mọi thứ tôi có thể tưởng tượng:

  • thêm jfxrt.jar tiêu chuẩn JRE (Tôi khẳng định gradle đang sử dụng java tiêu chuẩn của tôi để chạy) ext thư mục, vì vậy mà tôi bây giờ có thể biên dịch các lớp java với javac và chạy chúng với java (Tôi biết rằng trong phiên bản Java này, JavaFX jar nên đã có trong classpath của JDK, nhưng tôi vẫn không thể RUN, trái ngược với biên dịch, ứng dụng Java của tôi trước khi làm điều này).
  • cũng đã thêm một liên kết mềm để jar cùng trong classpath groovy, vì vậy mà tôi có thể làm điều gì đó giống như hình dưới đây từ vỏ groovy và nó hoạt động:

    nhập khẩu javafx.application.Application như A; println A

Điều này cũng hoạt động trong Groovy Console.

Nó chỉ không hoạt động ở Gradle!

Cảm ơn bạn đã được trợ giúp.

Trả lời

6

Sử dụng JavaFX Gradle Plugin.

Plugin JavaFX Gradle sẽ có thể tìm ra nơi có thời gian chạy JavaFX mà bạn không phải thực hiện cấu hình thủ công, môi trường cụ thể.

Để biết thêm thông tin về độ phân giải đường dẫn lớp JavaFX (không liên quan đến Gradle), xem: Compile code using JavaFX 2.0 (using command line).

Cũng lưu ý, nếu bạn đang sử dụng Oracle Java 8 hoặc mới hơn, các lớp JavaFX hiện đang trên đường dẫn thời gian chạy mặc định để triển khai Oracle Java.

Ngẫu nhiên, build system for the entire JavaFX system is based on Gradle, do đó chắc chắn không có sự không tương thích giữa JavaFX và Gradle.

+0

Cảm ơn thông tin. – Renato

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