2017-09-22 112 views
2

我想編譯一個java 9模塊庫與GA Jdk 9在一個debian系統與gradle 4.2。 要做到這一點,我只是做這個用ModulePath進行更換我的類路徑:Java 9 gradle不能找到javafx模塊

compileJava { 
    doFirst { 
     options.compilerArgs = [ 
      '--module-path', classpath.asPath, 
     ] 
     classpath = files() 
    } 
} 

我在classpath中我所有的依賴圖書館的,他們進入ModulePath進行,並且工作正常,當我嘗試編譯確實找到我所有的圖書館。

現在的問題是該項目也使用javafx。在Java 8中,jfxrt.jar被包含在jdk中,並且據我所知,它在默認的類路徑中。 對於Java 9我紅色,它現在也模塊化和包括。

但是當我嘗試編譯模塊,編譯器告訴我,他無法找到JavaFX的模塊:

.../src/module-info.java:10: error: module not found: javafx.controls 
     requires javafx.controls; 
        ^

在Windows上正常工作,而不JavaFX的在ModulePath進行

的jdk包括JavaFX的beeing: http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.html

+4

Debian版本可能沒有JavaFX模塊。 'java --list-modules'將列出運行時映像中的模塊,是否列出了javafx。*模塊? –

+1

謝謝,我的--list-modules不包含javafx。*模塊。看來我沒有下載正確的jdk。我從http://jdk.java.net/9/獲得了我的Jdk。這個Jdk似乎沒有包含javafx模塊。來自oracle網站的人確實包括它,現在它正在工作 – Ben

回答

3

爲什麼編譯器不能找到一個Debian系統上JavaFX的模塊,但在Windows上工作得很好,而不

原因

可能是列在下面Operating Systems認證配置。除了確認使用java --list-modules模塊列表由@Alan的意見建議請務必注意:

對於Linux平臺,需要支持JavaFX的GTK2 2.18+。


的文件,如果你的應用程序可能會使用這些以及還規定了JavaFX圖形和媒體支持的詳細信息。

+0

我不知道,如果你只是試圖編譯的東西,而不是執行它,那麼重要。事實證明,我得到了開源的JDK構建,他們不包括javafx – Ben

+0

*只是嘗試編譯的東西,而不是執行它*它確實很重要,因爲如果代碼不編譯它不會適當地轉換成可執行文件形成。另外@Ben歡迎您使用正確鏈接更新答案,最終下載並正常工作。這會使答案更有幫助。 – nullpointer