מקור: Mccue.dev היום תלמד כיצד ליצור קובץ EXE בר הפעלה מתוכנת Java להפעלה על מערכת ההפעלה Windows. לחיצה כפולה להפעלה היא אחת הדרכים הקלות ביותר לפתוח תוכנית. אם לאדם שאליו ברצונך להציג את היישום שלך כבר מותקנת הגרסה הנכונה של Java, הוא יכול ללחוץ פעמיים על קובץ ה-jar כדי להפעיל אותו. אם לא מותקן בו Java, יש דרכים ליצור מתקין הפעלה, כגון jpackage . לאחר מכן, כדי להפעיל את הקוד אתה רק צריך ללחוץ על מתקין זה. אתה יכול גם להשתמש ב-Native Image כדי להפוך את הקוד לקובץ הפעלה שאינו דורש התקנה נוספת. במאמר זה, נתמקד בגישה פשוטה למדי שעובדת עבור כל יישום, לא משנה באילו תלות אתה כולל או באילו תכונות JVM אתה משתמש. את הקוד שיידון היום ניתן למצוא במאגר GitHub , וקובצי ההפעלה עם התוכנית מתפרסמים כאן .
ערימה בשימוש
Java 9+
java --גרסה jlink --גרסה
מייבן
mvn --גרסה
NodeJS
npx --גרסה
שלב 1: הידור וארוז את הקוד שלך לצנצנת
תוכנית בסיסית זו תיצור חלון פשוט עם טקסט שתוכלו לשנות על ידי לחיצה על אחד הכפתורים בממשק.package example;
import org.apache.commons.text.WordUtils;
import javax.swing.*;
import java.awt.*;
public class Main {
public static void main(String[] args) {
var label = new JLabel("Hello, World!");
label.setFont(new Font("Serif", Font.PLAIN, 72));
var uppercaseButton = new JButton("Uppercase");
uppercaseButton.addActionListener(e ->
label.setText(WordUtils.capitalize(label.getText()))
);
var lowercaseButton = new JButton("lowercase");
lowercaseButton.addActionListener(e ->
label.setText(WordUtils.uncapitalize(label.getText()))
);
var panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
panel.add(label);
panel.add(uppercaseButton);
panel.add(lowercaseButton);
var frame = new JFrame("Basic Program");
frame.add(panel);
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
}
המטרה שלנו כעת היא לארוז את הקוד יחד עם התלות שלו לתוך צנצנת. קובצי JAR הם ארכיוני ZIP רגילים עם מעט מבנה נוסף. עבור פרויקט Maven התצורה תיראה כך.
<?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>example</groupId> <artifactId>javaexe</artifactId> <version>1.0</version> <properties> <project.build.sourceEncoding>UTF-8</project .build.sourceEncoding> <maven.compiler.source>18</maven.compiler.source> <maven.compiler.target>18</maven.compiler.target> </properties> <dependencies> <dependency> <groupId> org.apache.commons</groupId> <artifactId>commons-text</artifactId> <version>1.9</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache .maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>2.4.3</version> <executions> <execution> <phase>חבילה</phase> <goals> <goal> shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <manifestEntries> <Main-Class>example.Main</Main- Class> <Build-Number>1.0</Build-Number> </manifestEntries> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>
כאן התוסף "צל" יטפל בשילוב קוד מכל התלות שלך לתוך הצנצנת. במקרה זה, התלות החיצונית היחידה היא org.apache.commons/commons-text .
חבילה נקייה של mvn
לאחר מכן נעביר את קובץ ה-jar אל יעד/ ספריה חדשה שם הוא יופרד מקבצים אחרים.
mkdir build mv target/javaexe-1.0.jar build
שלב 2: צור סביבת ריצה של Java (JRE)
כדי להפעיל את קובץ ה-jar שכבר יצרנו, עלינו לקשר אותו עם סביבת זמן הריצה של Java. לשם כך נשתמש ב-jlink . מכיוון שהמערכת האקולוגית של Java לא משתמשת במודולים, כנראה שלא שמעתם עליהם או השתמשתם ב-jlink. בקיצור, jlink יכול ליצור "תמונות הפעלה מותאמות אישית". לדוגמה, אתה יוצר שרת אינטרנט. אתה לא צריך AWT או Swing, אז הכללת אותם בקוד שלך תהיה מיותרת. עם jlink אתה יכול ליצור JRE שאינו כולל את המודול java.desktop כלל . מערכת זו פועלת בצורה הטובה ביותר אם היישום שלך וכל התלות שלו כוללים קבצי module-info.java מורכבים , שאומרים ל-jlink בדיוק אילו מודולים אתה רוצה לכלול. אתה יכול גם להגדיר באופן ידני את רשימת המודולים הנדרשים באמצעות jdeps . ואפילו ללא פרויקט מודולרי, אנו יכולים לשכפל ביעילות את התקנת ה-Java שלנו לתוך ספרייה באמצעות jlink.
jlink --add-modules ALL-MODULE-PATH --פלט בנייה/זמן ריצה
הכללת כל מודול בנפרד מבטיחה שספריות כגון org.apache.commons/commons-text יפעלו כמתוכנן. אנחנו רק צריכים להבין אילו מודולים אנחנו צריכים.
שלב 3: שלב את Jar ו-JRE לקובץ הפעלה
קיים קובץ jar המכיל את הקוד ואת כל התלות שלו, כמו גם את ה-JRE, כל מה שנותר הוא לשלב אותם. לשם כך עלינו לבצע את הפעולות הבאות:- דחס את הספרייה המכילה את ה-JRE והצנצנת של היישום שלך.
- צרף סקריפט stub לראש קובץ ה-zip הזה, שיחלץ את הנתונים לספרייה זמנית ויריץ את הקוד.
npx caxa \ --input build \ --יישום פלט \ --no-include-node \ -- "{{caxa}}/runtime/bin/java" "-jar" "{{caxa}}/javaexe -1.0 .jar"
פעולה זו תיצור קובץ הפעלה בשם "יישום". אם אתה יוצר אותו עבור Windows, עליך לציין "application.exe". כאשר קובץ ההפעלה פועל, {{caxa}} יוחלף בספרייה הזמנית שבה נפרס קובץ ה-zip. שימו לב כי בעת יצירת קבצי הפעלה, נעשה שימוש גם במנגנונים כגון חתימת קוד ועדכונים אוטומטיים. אולם דברים אלו דורשים עיון מעמיק יותר, שקשה להשתלב בפרסום אחד.
GO TO FULL VERSION