gui*_*lum 2 java ubuntu javafx java-10
我切换到ubuntu 18.04.其中java 10默认为jvm
现在我使用javafx的应用程序无法再编译了.
cannot find symbol
[ERROR] symbol: class ObservableMap
Run Code Online (Sandbox Code Playgroud)
我尝试将参数添加到maven-compiler-plugin以加载javafx.graphics模块.
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<compilerArgs>
<arg>--add-modules</arg>
<arg>javafx.graphics</arg>
</compilerArgs>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
结果:
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] module not found: javafx.graphics
Run Code Online (Sandbox Code Playgroud)
当然,java --list-modules | grep fx什么都不返回.
我花了10多个小时试图解决这个问题.
TL:DR我应该怎么做用Java 10编译我的JavaFX模块?
最小项目:
/pom.xml
<project>
<modelVersion>4.0.0</modelVersion>
<packaging>jar</packaging>
<name>java10fx</name>
<artifactId>java10fx</artifactId>
<version>0.0.1</version>
<groupId>my.test</groupId>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<release>10</release>
</configuration>
</plugin>
</plugins>
</build>
</project>
Run Code Online (Sandbox Code Playgroud)
/src/main/java/MyApp.java
import javafx.application.Application;
import javafx.stage.Stage;
public class MyApp extends Application{
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {}
}
Run Code Online (Sandbox Code Playgroud)
错误:
java10fx/src/main/java/MyApp.java:[1,26] package javafx.application does not exist
Run Code Online (Sandbox Code Playgroud)
OpenJDK从未包含JavaFX,也不包含Java 11,Oracle JDK也不会,因此JavaFX必须成为常规依赖项.OpenFFX是JavaFX背后的项目,最近发布了一个与Java 10和11一起使用的独立JavaFX SDK的早期访问版本,但它尚未在Maven Central上提供(计划在未来使用).
目前,您必须手动下载SDK并找到将其添加到Maven构建的方法,例如将其部署到Nexus或将其包含在repo的文件夹中.一旦它在Maven Central上可用,您就可以像使用任何其他依赖项一样使用它.