[英]How to pass system properties to self-contained Java applications on the command line
[英]Self-Contained Applications, built in Java
我看過一些在線演示文稿,其中簡要提到了 Java 9 中的自包含應用程序,但我有一個問題想澄清一下。
使用新的模塊系統,您現在可以只包含運行應用程序所需的最少代碼量。 但是,希望運行應用程序的系統是否仍需要 JRE,或者是否可以將其包含在程序的基本模塊中?
我懷疑是后者,因為下載最新版本 Java 的頁面(此處<\/a>)仍然顯示版本 8_151。
TL;DR - 使用 Java 9,是否可以創建一個獨立的可執行文件,可以在沒有安裝 JRE\/Java 的系統上執行?
是的,這可以
通過
jlink<\/code><\/a> (
JEP 282<\/a> ) 實現,但是您的所有代碼和<\/em>依賴項都需要是模塊化 JAR(即帶有
module-info.class<\/code>的 JAR)。
它是這樣工作的:
詳細:
--module-path<\/code>列出包含模塊的文件夾 - 這需要包括您要使用的 JDK 附帶的平台模塊(在$JAVA_HOME\/jmods<\/code> )和您的應用程序模塊( mods<\/code> )
<\/li>
--add-modules<\/code>命名您希望運行時映像包含的模塊 - 包括其所有(它們的)傳遞依賴項
<\/li>
--launcher<\/code>是可選的,但非常方便;
它使用給定名稱( launch-app<\/code> )創建一個特定於操作系統的啟動器(例如 Windows 上的.bat<\/code> ),該啟動器啟動指定的模塊( your.app<\/code> ;在這種情況下,假設為它定義了主類)
<\/li>
--output<\/code>指定創建運行時映像的位置
<\/li><\/ul>"
作為一個編輯(在評論中指出),
javapackager<\/code>在 Java-10 中從 JDK 中刪除,人們可以期待使用
jpackage<\/code><\/strong><\/a>作為 Java-14 以來的孵化工具。
您可以使用
javapackager<\/code><\/a><\/strong>工具。
Java 打包工具為多種格式的自包含應用程序包提供內置支持。
基本包是硬盤驅動器上的單個文件夾,其中包含所有應用程序資源和 JRE。 該軟件包可以按原樣重新分發,或者您可以構建一個可安裝的軟件包(例如,EXE 或 DMG 格式。)
這對我有用。 它在應用程序文件夾中包含 JRE 並創建一個可執行文件。 我在 src 文件夾中有我的文件 java 文件,這個命令編譯並創建了一個帶有可執行文件的 dist 文件夾。
javapackager -makeall -name WordAnalyzer_app -appclass queue.Gui
pause
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.