jdk11 javafx_JDK 11上的JavaFX

jdk11 javafx

在JFX第11版发布后,人们对JavaFX与JDK的解耦感到百感交集。 我们许多人认为现在是时候告别JavaFX并改用另一种GUI技术了,而另一些人对此情况感到高兴。 他们认为,将JavaFX与Oracle分离开来,并致力于将其作为开源社区驱动的项目进行开发,对于JavaFX来说,是一个获得更大发展的绝好机会。 我属于后者。 尽管我可能担心JavaFX的发展方式,但我坚信,凭借Java Modularity和JPMS所带来的功能,拥有一个单独的JavaFX模块确实令人着迷。 您可以只将该模块包含到您的项目中,使用“ jlink”工具和BOOM创建自定义运行时映像! 您只有一个精美的模块化项目,可以轻松在其他地方运输和运行该项目。

javafx

您可能会问自己:“如何?”。 这基本上就是我将在本文中为您说明的内容。 我将向您展示如何使用Maven创建模块化项目。

环境:

我正在“抢先体验”上使用JDK 11。 您可以从以下链接下载它: http : //jdk.java.net/11/

$ java --version
java 11-ea 2018-09-25
Java(TM) SE Runtime Environment 18.9 (build 11-ea+24)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11-ea+24, mixed mode)

还有Apache Maven

$ mvn --version
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T23:03:14+04:30)
Maven home: C:\Program Files\Maven\apache-maven-3.5.4
Java version: 11-ea, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk-11
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

创建一个项目:

我的项目有2个模块。 一个模块是逻辑 ,而另一个模块是与JavaFX相关的代码所属的GUI

这是项目结构:

javafx11-demo
│   pom.xml
│
├───gui
│   │   pom.xml
│   │
│   └───src
│       └───main
│           └───java
│               │   module-info.java
│               │
│               └───com
│                   └───mhrimaz
│                       └───gui
│                               GUIMain.java
│
└───logic│   pom.xml│└───src└───main└───java│   module-info.java│└───com└───mhrimaz└───logicCoolLogic.java

配置“ pom.xml”:

这是根pom.xml的内容:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.mhrimaz</groupId><artifactId>javafx11-demo</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><modules><module>logic</module><module>gui</module></modules><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.7.0</version><configuration><source>11</source><target>11</target><showWarnings>true</showWarnings><showDeprecation>true</showDeprecation></configuration><dependencies><dependency><groupId>org.ow2.asm</groupId><artifactId>asm</artifactId><version>6.2</version></dependency></dependencies></plugin></plugins></build>
</project>

基本上,我正在配置maven编译器插件并将其配置为Java11。请注意,我定义了两个模块: 逻辑gui

对于逻辑模块,pom.xml如下所示:

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.mhrimaz</groupId><artifactId>javafx11-demo</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>logic</artifactId><version>1.0-SNAPSHOT</version></project>

最后,对于gui模块,我们将其pom.xml定义如下:

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.mhrimaz</groupId><artifactId>javafx11-demo</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>gui</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>com.mhrimaz</groupId><artifactId>logic</artifactId><version>${project.version}</version></dependency><dependency><groupId>org.openjfx</groupId><artifactId>javafx-controls</artifactId><version>11-ea+19</version></dependency></dependencies></project>

请注意,这里有两个依赖项,一个是对逻辑模块的依赖关系,因为每个gui都需要逻辑,而另一个是对javafx -controls模块的依赖关系。

配置“ module-info.java”:

如果您不熟悉Java模块化概念,建议您阅读其他有关JPMS和模块化的文章。

我们应该导出“ com.mhrimaz.logic”包,以使其在我们的模块之外可以访问。

module logic{exports com.mhrimaz.logic;
}

对于gui模块,我们应该做几件事,首先,我们需要逻辑模块。 另一件事是,我们应该需要javafx.controls模块。 最后,出于JavaFX的考虑,我们应该打开“ com.mhrimaz.gui”包以进行运行时深度反射访问。 我们将完成以下配置:

module gui{requires logic;requires javafx.controls;opens com.mhrimaz.gui to javafx.graphics;
}

最后步骤:

为了编译和构建模块,请输入以下命令:

mvn clean install

这将为您编译并构建模块。 最后,您将具有以下层次结构:

C:.
│   pom.xml
│
├───gui
│   │   pom.xml
│   │
│   ├───src
│   │   └───main
│   │       └───java
│   │           │   module-info.java
│   │           │
│   │           └───com
│   │               └───mhrimaz
│   │                   └───gui
│   │                           GUIMain.java
│   │
│   └───target
│       │   gui-1.0-SNAPSHOT.jar
│       │
│       ├───classes
│       │   │   module-info.class
│       │   │
│       │   └───com
│       │       └───mhrimaz
│       │           └───gui
│       │                   GUIMain.class
│       │
│       ├───generated-sources
│       │   └───annotations
│       ├───maven-archiver
│       │       pom.properties
│       │
│       └───maven-status
│           └───maven-compiler-plugin
│               └───compile
│                   └───default-compile
│                           createdFiles.lst
│                           inputFiles.lst
│
└───logic│   pom.xml│├───src│   └───main│       └───java│           │   module-info.java│           ││           └───com│               └───mhrimaz│                   └───logic│                           CoolLogic.java│└───target│   logic-1.0-SNAPSHOT.jar│├───classes│   │   module-info.class│   ││   └───com│       └───mhrimaz│           └───logic│                   CoolLogic.class│├───generated-sources│   └───annotations├───maven-archiver│       pom.properties│└───maven-status└───maven-compiler-plugin└───compile└───default-compilecreatedFiles.lstinputFiles.lst

现在如何运行? 经过大量的搜索和挖掘,我没有想出可以输入maven命令来运行该项目的解决方案,因此我将以老式的方式进行。

基本命令如下:

java --module-path <all-of-your-modules-jar-file> -m <which-module>/<and-which-class-of-it-you-want-to-run>

因此,我们知道,我们不应该以这种方式手工完成此任务,但是我的朋友对您的期望却很低。 如果有人知道更好的方法,请告诉我。 该命令是:

java --module-path gui\target\gui-1.0-SNAPSHOT.jar;logic\target\logic-1.0-SNAPSHOT.jar -m gui/com.mhrimaz.gui.GUIMain

显然,如果运行此命令,最终将看到此错误:

Error occurred during initialization of boot layer
java.lang.module.FindException: Module javafx.controls not found, required by gui

基本上,它说,在模块解析期间,没有找到javafx.controls模块。 很简单,您应该将所有JavaFX模块添加到模块路径。 最终命令如下:

java --module-path gui\target\gui-1.0-SNAPSHOT.jar;logic\target\logic-1.0-SNAPSHOT.jar;"C:\Users\YOURUSERNAME\.m2\repository\org\openjfx\javafx-base\11-ea+19\javafx-base-11-ea+19-win.jar";"C:\Users\YOURUSERNAME\.m2\repository\org\openjfx\javafx-graphics\11-ea+19\javafx-graphics-11-ea+19-win.jar";"C:\Users\YOURUSERNAME\.m2\repository\org\openjfx\javafx-controls\11-ea+19\javafx-controls-11-ea+19-win.jar" -m gui/com.mhrimaz.gui.GUIMain

这个命令在我的Windows机器上可以正常工作。 如果需要代码,可以在我的GitHub上找到它。

如果您有任何疑问,请不要犹豫,我会尽力回答。

最后,Hello World!

javafx

翻译自: https://www.javacodegeeks.com/2018/08/javafx-on-jdk-11.html

jdk11 javafx

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/333011.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

配置Java环境变量

JAVA环境变量配置 一、新建系统变量 新建变量&#xff0c;找到安装目录新建一个JAVA_HOME,路径为bin目录的前一级目录。 可以安装多个JAVA版本&#xff0c;然后新建不同的JAVA_HOME名称&#xff0c;然后填写bin目录的前一级路径。 二、编辑环境变量 找到path,然后编辑%JAVA…

MySQL的存储引擎InnoDB,B+Tree数据结构索引的实现原理图(聚簇索引/聚集索引)

1.表数据文件本身就是按BTree组织的一个索引结构文件 2.InnoDB的BTree的索引数据结构中&#xff0c;表数据和索引数据合并在一起&#xff0c;即叶子节点包含了完整的数据记录&#xff0c;这样的索引叫聚簇索引。

idea 切换java11_Java 11就在这里,您准备好进行切换了吗?

idea 切换java11在应该将Java 9发行版“震撼我们的世界”一年之后&#xff0c;我们一直在等待的LTS版本终于出现了 我们知道&#xff0c;大多数开发人员&#xff0c;团队&#xff0c;公司等尚未通过Java 8进行更新。 即使去年发布了模块Java 9&#xff0c;随后在3月又发布了Ja…

编译Java源文件

编写 新建hello.java文件 注意类名要和文件名称相同&#xff0c;如果不相同会提示错误 public class hello{public static void main(String[] args) {System.out.println("HelloWorld");} }编译 javac hello.java 编译会生成相应的.class文件。 运行 java hell…

oracle jdk_两个Oracle JDK的故事

oracle jdk最近 &#xff0c;人们担心 Java开发人员现在会无意中使用错误的Oracle提供的JDK实现&#xff08;从JDK 11开始 &#xff09;&#xff0c; Oracle提供了开源OpenJDK的构建 &#xff0c;并且还主要基于OpenJDK源提供了商业JDK的构建。 下表比较并对比了Oracle提供的两…

安装MAVEN和找不到JAVA_HOME问题原因

一、MAVEN安装 1.将下载好的MAVEN解压 2.配置MAVEN环境变量 MAVEN_HOME3.3.9 配置path 3.配置本地仓库 打开settings.xml进行修改 在MAVEN下新建一个repository文件夹 4.配置阿里MAVEN仓库配置 每次去阿里云下载jar包 <mirror><id>AliMaven</id>&…

数据库中的二级索引_普通索引_辅助索引

普通索引、二级索引、辅助索引是同个东西。 假设有张表的字段为 name&#xff0c;这个字段添加普通索引&#xff08;也叫二级索引&#xff09;&#xff0c;其存储引擎为 InnoDB&#xff0c;那么这个 name 索引的结构图&#xff1a;

2018-12 jdk_JDK 12新闻(2018年9月13日)

2018-12 jdk由于计划于本月晚些时候&#xff08;2018年9月25日&#xff09;发布JDK 11的 一般可用性 &#xff0c;是时候开始更仔细地研究JDK 12了 。 在OpenJDK jdk-dev邮件列表上的标题为“ JDK 12的计划时间表 ”的消息中 &#xff0c; 马克赖因霍尔德 &#xff08; Mark R…

idea连接mysql数据库时连接显示错误caching_sha2_password

问题描述 Connection to paradigmlocalhost failed. Unable to load authentication plugin caching_sha2_password.问题原因 mysql8之前的版本使用的密码加密规则是mysql_native_password&#xff0c;但是在mysql8则是caching_sha2_password&#xff0c;所以需要修改密码加密…

MySQL联合索引原理_复合索引_组合索引_多列索引

文章目录联合索引原理示意图联合索引就是复合索引、组合索引、多列索引。联合索引原理示意图

fluent design_Fluent Design单选按钮,复选框,选择框,Java菜单

fluent design这次我对JMetro进行了重大更新。 3.8版带来了以下新的Fluent Design &#xff08;FDS&#xff09;启发风格&#xff08;深色和浅色&#xff09;和更新&#xff1a; 新的单选按钮样式&#xff1b; 复选框的新样式&#xff1b; 菜单的新样式&#xff1b; 更新了…

MySQL的explain工具介绍

文章目录介绍explain extendedshow waringsexplain partitionsid 字段select_typetypekeypossible_keyskey_lenkey_len 计算规则refrowsextra介绍 使用 explain 可以模拟优化器执行 SQL 语句&#xff0c;会返回 SQL 语句的执行计划信息&#xff0c;但是不会真正去执行这条 SQL…

jetty设置双向ssl_在Jetty中设置SSL

jetty设置双向ssl当您必须快速启用SSL并陷入困境时&#xff0c;您是否遇到了问题&#xff1a;-( 你并不孤单&#xff0c;我将分享我的痛苦和一些学习。 我将分享在码头上启用SSL的步骤。 警告&#xff1a;仅将以下说明用于开发人员设置和生产&#xff0c;请联系您的安全专家…

使用Thumbnailator压缩照片

导入依赖 <dependency><groupId>net.coobird</groupId><artifactId>thumbnailator</artifactId><version>0.4.8</version></dependency>代码 package com.asx.hyd.non.trs;import net.coobird.thumbnailator.Thumbnails;impo…

MySQL的索引优化

文章目录全值匹配最左前缀原则不在索引列上使用函数&#xff0c;会导致索引失效而转向使用全表扫描范围条件右边的索引列会失效尽量使用覆盖索引使用不等于操作符无法使用索引is null&#xff0c;is not null 一般情况下也无法使用索引like 以通配符开头的&#xff0c;索引会失…

cuba 平台_认识CLI for CUBA平台

cuba 平台毫无疑问&#xff0c;软件开发人员&#xff08;尤其是Java开发人员&#xff09;的世界充满了键盘狂热者&#xff0c;最好通过单击一下鼠标键入10-15个字母。 而且我们的社区也不例外&#xff0c;因此我们经常被问到“如何在没有CUBA Studio的情况下启动项目&#xff1…

关闭zookeeper进程

查看端口是否占用 netstat -ano|findstr “2181” 关闭相应进程 tskill 端口号 MAC启动配置文件 找到对应路径 /Users/mac/Desktop/soft/software/apache-zookeeper-3.8.0/bin启动zookeeper ./zkServer.sh start查看状态 ./zkServer.sh status关闭zookeeper ./zkServe…

Linux系统下,虚拟终端开启256色_虚拟终端类型xterm开启256色

文章目录查看当前终端类型修改终端类型查看当前终端类型 现在的终端模拟器早就支持256色了&#xff0c;不过默认可能还是8色的。 开启终端&#xff0c;查看终端类型&#xff1a; [roothtlwk0001host ~]# echo $TERM xterm接着查看 xterm 终端支持的颜色&#xff1a; [rooth…

io.realm:rea_使Java具有响应性的框架和工具包:RxJava,Spring Reactor,Akka和Vert.x概述...

io.realm:rea如今&#xff0c;人们需要具有高用户体验的高响应性&#xff0c;交互式应用程序&#xff0c;这通常意味着要处理异步性&#xff0c;尤其是当应用程序涉及高负载&#xff0c;实时数据和多用户时。 由于Java是一种固有的语言&#xff0c;它固有地支持命令式编程风格…

解决postman请求乱码问题

在请求头里加入 Content-Type&#xff1a;application/json;charsetUTF-8