Как экспортировать проект Maven в exe (или jar) файл, используя Eclipse? - PullRequest
0 голосов
/ 14 января 2020

Я выполнил Maven проект и хотел бы экспортировать его в исполняемый exe-файл (или файл jar).

После того, как я экспортировал его в исполняемый файл .jar, файл не открывается.

Что я сделал -> Щелкните правой кнопкой мыши по проекту -> Refre sh -> Экспорт -> Запуск файла Jar -> Требуется пакет ...

То же самое для файла .exe, я использовал launch4j и экспортировал в файл .exe, и он тоже не запустился.

Что я сделал -> Правой кнопкой мыши в проекте -> Refre sh -> Export -> Runnable Jar File -> Extract Required ... JRE min: 1.11.0 (я использую openjdk-11.0.2)

кто-нибудь есть какие-либо советы по этому поводу? Спасибо!

Обновлено:

<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.flexus</groupId>
    <artifactId>FMOTracker</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>11.0.2</version>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-graphics </artifactId>
            <version>11</version>
            <classifier>win</classifier>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-fxml</artifactId>
            <version>11.0.2</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.15</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.1.1</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </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>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.openjfx</groupId>
                <artifactId>javafx-maven-plugin</artifactId>
                <version>0.0.4</version>
                <configuration>
                    <mainClass>com.flexus.FMOTracker.App</mainClass>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>fully.qualified.MainClass</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
            </plugin>
            <!-- LAUNCH4J -->
            <plugin>
                <groupId>com.akathist.maven.plugins.launch4j</groupId>
                <artifactId>launch4j-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>l4j-clui</id>
                        <phase>package</phase>
                        <goals>
                            <goal>launch4j</goal>
                        </goals>
                        <configuration>
                            <headerType>console</headerType>
                            <jar>target/FMOTracker-0.0.1-SNAPSHOT-jar-with-dependencies.jar</jar>
                            <outfile>target/FMOTracker.exe</outfile>
                            <downloadUrl>https://java.com/en/download/manual.jsp</downloadUrl>
                            <classPath>
                                <mainClass>com.flexus.FMOTracker.App</mainClass>
                            </classPath>
                            <jre>
                                <runtimeBits>64</runtimeBits>
                                <minVersion>1.11.0</minVersion>
                                <jdkPreference>preferJre</jdkPreference>
                            </jre>
                            <versionInfo>
                                <fileVersion>1.0.0.0</fileVersion>
                                <txtFileVersion>${project.version}</txtFileVersion>
                                <fileDescription>${project.name}</fileDescription>
                                <copyright>C</copyright>
                                <productVersion>1.0.0.0</productVersion>
                                <txtProductVersion>1.0.0.0</txtProductVersion>
                                <productName>${project.name}</productName>
                                <internalName>AppName</internalName>
                                <originalFilename>AppGUI.exe</originalFilename>
                            </versionInfo>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <mainClass>com.flexus.FMOTracker.App</mainClass>
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>attached</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- LAUNCH4J ENDE -->
        </plugins>
    </build>
</project>

Что я сделал:

чистая сборка: одна -> файл JAR с зависимостями создан

чистый пакет -> файл exe создан

Проблема: файл exe открывается и закрывается немедленно. Как я могу это исправить? Это из-за моей ошибки в исходном коде?

Обновлен pt.2:

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/flexus/FMOTracker/App has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)

Обновлен Pt3: я изменил minJre на 1.11.0 Error: JavaFX runtime components are missing, and are required to run this application

Хотя , У меня установлен openjdk 11.0.2.

openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)

У меня также есть внешний jres-файл javafx sdk 11.0.2 в моей пользовательской библиотеке

Мои аргументы VM

--module-path "C:\Program Files\Java\javafx-sdk-11.0.2\lib" --add-modules javafx.controls,javafx.fxml```

1 Ответ

1 голос
/ 14 января 2020

Щелкните правой кнопкой мыши по проекту -> Запуск от имени -> Сборка Maven. Он спросит цели: чистый пакет

. Вы найдете банку в цели

Если сборка Maven предназначена для чего-то другого используйте конфигурации Run и создайте новый Run с указанными выше целями

(все это, как само собой разумеющееся, это проект maven, в противном случае вы можете захотеть создать его раньше, включая конфигурацию launch4j, чтобы сгенерировать exe-файл)

...