响应式网站怎么做才实用,龙游发布紧急提示,检测asp网站死循环,海曙网站制作jdk11 javafx在JFX第11版发布后#xff0c;人们对JavaFX与JDK的解耦感到百感交集。 我们许多人认为现在是时候告别JavaFX并改用另一种GUI技术了#xff0c;而另一些人对此情况感到高兴。 他们认为#xff0c;将JavaFX与Oracle分离开来#xff0c;并致力于将其作为开源社区驱… jdk11 javafx 在JFX第11版发布后人们对JavaFX与JDK的解耦感到百感交集。 我们许多人认为现在是时候告别JavaFX并改用另一种GUI技术了而另一些人对此情况感到高兴。 他们认为将JavaFX与Oracle分离开来并致力于将其作为开源社区驱动的项目进行开发对于JavaFX来说是一个获得更大发展的绝好机会。 我属于后者。 尽管我可能担心JavaFX的发展方式但我坚信凭借Java Modularity和JPMS所带来的功能拥有一个单独的JavaFX模块确实令人着迷。 您可以只将该模块包含到您的项目中使用“ jlink”工具和BOOM创建自定义运行时映像 您只有一个精美的模块化项目可以轻松在其他地方运输和运行该项目。 您可能会问自己“如何”。 这基本上就是我将在本文中为您说明的内容。 我将向您展示如何使用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-ea24)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11-ea24, mixed mode) 还有Apache Maven $ mvn --version
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T23:03:1404: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 version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.mhrimaz/groupIdartifactIdjavafx11-demo/artifactIdversion1.0-SNAPSHOT/versionpackagingpom/packagingmodulesmodulelogic/modulemodulegui/module/modulesbuildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdversion3.7.0/versionconfigurationsource11/sourcetarget11/targetshowWarningstrue/showWarningsshowDeprecationtrue/showDeprecation/configurationdependenciesdependencygroupIdorg.ow2.asm/groupIdartifactIdasm/artifactIdversion6.2/version/dependency/dependencies/plugin/plugins/build
/project 基本上我正在配置maven编译器插件并将其配置为Java11。请注意我定义了两个模块 逻辑和gui 。 对于逻辑模块pom.xml如下所示 ?xml version1.0 encodingUTF-8?project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdcom.mhrimaz/groupIdartifactIdjavafx11-demo/artifactIdversion1.0-SNAPSHOT/version/parentartifactIdlogic/artifactIdversion1.0-SNAPSHOT/version/project 最后对于gui模块我们将其pom.xml定义如下 ?xml version1.0 encodingUTF-8?project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdcom.mhrimaz/groupIdartifactIdjavafx11-demo/artifactIdversion1.0-SNAPSHOT/version/parentartifactIdgui/artifactIdversion1.0-SNAPSHOT/versiondependenciesdependencygroupIdcom.mhrimaz/groupIdartifactIdlogic/artifactIdversion${project.version}/version/dependencydependencygroupIdorg.openjfx/groupIdartifactIdjavafx-controls/artifactIdversion11-ea19/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-ea19\javafx-base-11-ea19-win.jar;C:\Users\YOURUSERNAME\.m2\repository\org\openjfx\javafx-graphics\11-ea19\javafx-graphics-11-ea19-win.jar;C:\Users\YOURUSERNAME\.m2\repository\org\openjfx\javafx-controls\11-ea19\javafx-controls-11-ea19-win.jar -m gui/com.mhrimaz.gui.GUIMain 这个命令在我的Windows机器上可以正常工作。 如果需要代码可以在我的GitHub上找到它。 如果您有任何疑问请不要犹豫我会尽力回答。 最后Hello World 翻译自: https://www.javacodegeeks.com/2018/08/javafx-on-jdk-11.htmljdk11 javafx