JavaRush /Java блогы /Random-KK /Кофе-брейк №148. Кез келген Java бағдарламасын дербес EXE...

Кофе-брейк №148. Кез келген Java бағдарламасын дербес EXE файлына қалай айналдыруға болады

Топта жарияланған
Дереккөз: Mccue.dev Бүгін сіз Windows амалдық жүйесінде іске қосу үшін Java бағдарламасынан орындалатын EXE файлын жасауды үйренесіз. Кофе-брейк №148.  Кез келген Java бағдарламасын дербес EXE файлына қалай айналдыруға болады - 1Іске қосу үшін екі рет басу - бағдарламаны ашудың ең оңай тәсілдерінің бірі. Қолданбаңызды көрсеткіңіз келетін адамда Java бағдарламасының дұрыс нұсқасы орнатылған болса, олар оны іске қосу үшін jar файлын екі рет баса алады. Егер оған Java орнатылмаған болса, jpackage сияқты орындалатын орнатушыны жасау жолдары бар . Осыдан кейін codeты іске қосу үшін осы орнатушыны басу жеткілікті. Сондай-ақ , codeты қосымша орнатуды қажет етпейтін орындалатын файлға айналдыру үшін Native Image қолданбасын пайдалануға болады . Бұл мақалада біз қандай тәуелділіктерді қосқаныңызға немесе JVM мүмкіндіктерін пайдалансаңыз да, кез келген қолданба үшін жұмыс істейтін қарапайым тәсілге тоқталамыз. Бүгін талқыланатын codeты 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);
    }
}
Кофе-брейк №148.  Кез келген Java бағдарламасын дербес EXE файлына қалай айналдыруға болады - 2Біздің ендігі мақсатымыз - codeты тәуелділіктерімен бірге банкаға салу. JAR файлдары қосымша құрылымы аз қарапайым ZIP мұрағаты болып табылады. Maven жобасы үшін конфигурация келесідей болады.
<?xml нұсқасы="1.0" codeтау="UTF-8"?> <жоба 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>мысал</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> көлеңке</goal> </goals> <configuration> <transformers> <transformer application="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <manifestEntries> <Main-Class>мысал.Негізгі</Main- Класс> <Құру-Нөмірі>1.0</Құрылыс-Нөмірі> </manifestEntries> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>
Мұнда «көлеңке» плагині банкке барлық тәуелділіктеріңізден codeты қосады. Бұл жағдайда жалғыз сыртқы тәуелділік org.apache.commons/commons-text болып табылады .
mvn таза пакеті
Содан кейін біз бұл jar файлын басқа файлдардан бөлінетін жаңа мақсатқа/ каталогқа жылжытамыз .
mkdir құрастыру mv target/javaexe-1.0.jar құрастыру

2-қадам: Java Runtime Environment (JRE) жасау

Біз жасаған jar файлын іске қосу үшін оны Java орындалу ортасымен байланыстыруымыз керек. Ол үшін jlink қолданамыз . Java экожүйесі модульдерді пайдаланбағандықтан, сіз олар туралы естімеген немесе jlink қолданбаған шығарсыз. Қысқаша айтқанда, jlink «арнайы орындалатын кескіндерді» жасай алады. Мысалы, сіз веб-server жасайсыз. Сізге AWT немесе Swing қажет емес, сондықтан оларды codeыңызға қосу артық болады. jlink арқылы сіз java.desktop модулін мүлде қамтымайтын JRE жасай аласыз . Қолданбаңыз және оның барлық тәуелділіктері jlink-ке қосқыңыз келетін модульдерді нақты көрсететін құрастырылған module-info.java файлдарын қамтыса, бұл жүйе жақсы жұмыс істейді. Сондай-ақ, jdeps көмегімен қажетті модульдер тізімін қолмен анықтауға болады . Модульдік жоба болмаса да, біз Java орнатуымызды jlink арқылы каталогқа тиімді клондай аламыз.
jlink --add-modules ALL-MODULE-PATH --шығару құрастыру/орындау уақыты
Әрбір модульді жеке қосу org.apache.commons/commons-text сияқты кітапханалардың мақсатына сай жұмыс істеуін қамтамасыз етеді. Бізге қандай модульдер қажет екенін анықтау керек.

3-қадам: Jar және JRE файлдарын орындалатын файлға біріктіріңіз

Код және оның барлық тәуелділіктері, сондай-ақ JRE бар jar файлы болса, оларды біріктіру ғана қалады. Ол үшін келесі әрекеттерді орындауымыз керек:
  1. Қолданбаңыздың JRE және банкасы бар каталогты ықшамдаңыз.
  2. Деректерді уақытша каталогқа шығарып, codeты іске қосатын осы zip файлының жоғарғы жағына көшірме сценарийін тіркеңіз.
Бұл үшін caxa деп аталатын JavaScript кітапханасы бар . Оның мақсаты NodeJS жобаларын орындалатын файлдарға айналдыру және ол жүйедегі кез келген NodeJS қондырғыларын біріктіре алады. Бақытымызға орай, --no-include-node жалаушасын көрсету арқылы бұл қадамды өткізіп жіберуге болады .
npx caxa \ --input build \ --output application \ --no-include-node \ -- ​​"{{caxa}}/runtime/bin/java" "-jar" "{{caxa}}/javaexe -1,0 .jar"
Бұл «бағдарлама» деп аталатын орындалатын файлды жасайды. Егер сіз оны Windows үшін жасасаңыз, онда «application.exe» көрсету керек. Орындалатын файл іске қосылғанда, {{caxa}} zip файлы орналастырылған уақытша каталогпен ауыстырылады. Орындалатын файлдарды жасау кезінде codeқа қол қою және автоматты жаңартулар сияқты механизмдер де қолданылатынын ескеріңіз. Алайда бұл дүниелер тереңірек зерттеуді қажет етеді, оны бір басылымға сыйғызу қиын.
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION