可执行jar
javaFx 可執行jar (jdk 11)
目錄?src/main/java/com.mypack
AppMain.java
package com.mypack;import javafx.application.Application;/*** 打包運行* 錯誤: 缺少 JavaFX 運行時組件, 需要使用該組件來運行此應用程序。* 原因:模塊化 Java 程序與非模塊化 Java 程序的啟動方式有所不同* 解決:單獨創建一個啟動類*/ public class AppMain {public static void main(String[] args) {Application.launch(Main.class, args);} }Main.java
package com.mypack;import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.layout.StackPane; import javafx.stage.Stage; import org.apache.commons.lang3.StringUtils;public class Main extends Application {@Overridepublic void start(Stage stage){String str = "Say 'Hello World'";StringUtils.isNotBlank(str);Button btn = new Button();btn.setText("Say 'Hello World'");btn.setOnAction(actionEvent -> System.out.println("Hello World!"));StackPane root = new StackPane();root.getChildren().add(btn);Scene scene = new Scene(root, 300, 250);stage.setTitle("Hello World");stage.setScene(scene);stage.show();} }目錄 src/main/java/
module-info.java
module com.mypack {requires javafx.controls;requires javafx.fxml;requires org.apache.commons.lang3;opens com.mypack to javafx.graphics, javafx.fxml, org.apache.commons.lang3; }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>mypack</groupId><artifactId>mypack</artifactId><version>1.0-SNAPSHOT</version><properties><javafx.version>11</javafx.version></properties><dependencies><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.8.1</version></dependency><dependency><groupId>org.openjfx</groupId><artifactId>javafx-controls</artifactId><version>${javafx.version}</version></dependency><dependency><groupId>org.openjfx</groupId><artifactId>javafx-fxml</artifactId><version>${javafx.version}</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.0</version><configuration><release>11</release><source>11</source><target>11</target></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>3.1.1</version><configuration><archive><manifest><!--入口函數--><mainClass>com.mypack.AppMain</mainClass><addClasspath>true</addClasspath><classpathPrefix>lib/</classpathPrefix></manifest></archive></configuration></plugin><!--將依賴拷貝到lib目錄下--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><version>3.1.1</version><executions><execution><id>copy-dependencies</id><phase>package</phase><goals><goal>copy-dependencies</goal></goals><configuration><outputDirectory>${project.build.directory}/lib</outputDirectory></configuration></execution></executions></plugin></plugins></build></project>cmd運行
java -jar ****************\mypack-1.0-SNAPSHOT.jar
可執行jar -> jmode -> 可執行應用程序
jmod
- C:\Users\*\Desktop\a\jmods
- C:\Users\*\Desktop\a\lib\javaMoudle-1.0-SNAPSHOT.jar
jmod create --class-path lib\javaMoudle-1.0-SNAPSHOT.jar jmods\javaMoudle-1.0-SNAPSHOT.jmod
?
jlink
jlink --module-path "模塊目錄" --add-modules "你的模塊名" --launcher 模塊名=模塊名/主方法所在類路徑 --output "輸出目錄" --strip-debug --compress 2
jlink --module-path jmods --add-modules javaMoudle --launcher javaMoudle=javaMoudle/service.Main --output out
?
//如果可執行程序引用到第三方jar,只需要將jmod和第三方jar放到模塊路徑中,不需要添加模塊名可直接連接;
//modulepath:These modules can be modular JAR files, JMOD files, or exploded modules
jlink --module-path jmods? --add-modules javaMoudle? --launcher javaMoudle=javaMoudle/service.Main --output out
轉載于:https://www.cnblogs.com/xiaomaoyvtou/p/10559169.html
總結
- 上一篇: 点评----和时代专线
- 下一篇: 面试最后HR都要问一句有没有什么问题要问