Как создать исполняемый jar-файл, который является исполняемым (Maven-Jfoenix-Hibernate-IntelliJ) __ Может кто-нибудь решит тему / закройте, пожалуйста - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь сгенерировать исполняемый файл JAR из проекта, который использует: Maven, JFX, JFoenix, Hibernate ... в IntelliJ

Я пробовал много решений, которые мы можем найти на другом форуме / сайте разработчика(StackOverflow включен).Поэтому никто не работает для меня ..

Я пытался создать исполняемый файл JAR с:

  • Команда: MVN compile _, которые создаютдва исполняемых jar, которые ничего не выполняют ..

  • Создание артефакта: Файл -> Сохранить все -> Структура проекта -> + -> Jar -> От зависимостей модулей -> MainКласс: MyMainClass / Directory: src \ main \ java ИЛИ src \ main \ resources (потому что он работал на кого-то, чтобы это изменить.) -> Ok
    Build -> Build artifact -> Build OR Rebuild. В данный момент у меня есть исполняемый файл, но он ничего не выполняет ..

  • Затенение подключено: (ВыВы увидите в коде pom.xml), в результате чего:
Failed to execute goal
org.apache.maven.plugins:maven-shade-plugin:3.2.1:shade (default-cli)
on project GymFormManager: Failed to create shaded artifact, project main
artifact does not exist.

pom.xml, я беру только важную часть, потому что она слишком большая:

...

<modelVersion>4.0.0</modelVersion>
<groupId>com.gymform.maven</groupId>
<artifactId>GymFormManager</artifactId>
<version>1.0-SNAPSHOT</version>

</dependencies>
    ...   
    <!-- Try To Create Executable Jar -->
    <dependency>
        <groupId>commons-lang</groupId>
        <artifactId>commons-lang</artifactId>
        <version>2.1</version>
    </dependency>
    <dependency>
        <groupId>org.codehaus.plexus</groupId>
        <artifactId>plexus-utils</artifactId>
        <version>1.1</version>
    </dependency>
</dependencies>

<build>
    <plugins>

        ...

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <mainClass>com.gymformmanager.Main</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.2.1</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <transformers>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <mainClass>com.gymformmanager.Main</mainClass>
                            </transformer>
                        </transformers>

              <!-- I have tried with and without hadedArtifact -->       <shadedArtifactAttached>true</shadedArtifactAttached>
                        <shadedClassifierName>GymFormManager</shadedClassifierName> <!-- Any name that makes sense -->
                    </configuration>
                </execution>
            </executions>
        </plugin>

В настоящее время у меня есть три исполняемых jar, которые ничего не делают:

Первый исполняемый файл Путь первого executable

Второй и третий исполняемый файл Их пути

Редактировать: После следования советам Джони,У меня есть эта ошибка:

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/gymformmanager/Main has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runt
ime 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)

Я решил проблему версии с этим: Windows игнорирует JAVA_HOME: как установить JDK по умолчанию?

Error: JavaFX runtime components are missing, and are required to run this application

Хотяу меня в моем pom.xml зависимость:

 <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>11</version>
 </dependency>

Ответы [ 3 ]

0 голосов
/ 15 февраля 2019

Вы можете попробовать собрать так называемый fatjar с помощью maven:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        <archive>
            <manifest>
                <mainClass>com.gymformmanager.Main</mainClass>
            </manifest>
        </archive>
    </configuration>
    <executions>
        <execution>
            <id>assemble-all</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
 </plugin>

Это создаст дополнительный файл jar в вашем выходном каталоге с именем GymFormManager-jar-with-dependencies.jar.Вы можете запустить его с:

java -jar GymFormManager-jar-with-dependencies.jar
0 голосов
/ 08 марта 2019

Я думаю, javafx-maven-plugin - хороший вариант для создания приложения JFX.Он основан на Java Packager Tool и может создавать как собственные комплекты, так и jar.Звоните mvn jfx:jar, чтобы начать строительство.

<plugin>
    <!-- Generate Executable JFX JAR -->
    <groupId>com.zenjava</groupId>
    <artifactId>javafx-maven-plugin</artifactId>
    <version>8.8.3</version>
    <configuration>
        <vendor>${vendor}</vendor>
        <mainClass>${mainClass}</mainClass>
        <allPermissions>true</allPermissions>
        <manifestAttributes>
            <Implementation-Title>${project.name}</Implementation-Title>
            <Implementation-Version>${project.version}</Implementation-Version>
            <Implementation-Vendor>${project.organization.name}</Implementation-Vendor>
            <Build-Timestamp-Format>${maven.build.timestamp.format}</Build-Timestamp-Format>
            <Build-Timestamp>${dev.build.timestamp}</Build-Timestamp>
        </manifestAttributes>
        <jfxMainAppJarName>${jfxMainAppJarName}</jfxMainAppJarName>
    </configuration>
    <executions>
        <execution>
            <id>create-jfxjar</id>
            <phase>package</phase>
            <goals>
                <goal>build-jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>
0 голосов
/ 15 февраля 2019

Если вы хотите создать исполняемый файл JAR, вам необходимо соответствующим образом настроить Maven Archiver.Вы должны сказать ему, какой основной класс использовать.Это делается с помощью элемента конфигурации.Вот пример pom.xml, настроенный для добавления classpath и использования класса full.qualified.MainClass в качестве основного класса:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        ...
        <configuration>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
              <mainClass>fully.qualified.MainClass</mainClass>
            </manifest>
          </archive>
        </configuration>
        ...
      </plugin>
    </plugins>
  </build>
  ...
  <dependencies>
    <dependency>
      <groupId>commons-lang</groupId>
      <artifactId>commons-lang</artifactId>
      <version>2.1</version>
    </dependency>
    <dependency>
      <groupId>org.codehaus.plexus</groupId>
      <artifactId>plexus-utils</artifactId>
      <version>1.1</version>
    </dependency>
  </dependencies>
  ...
</project>
...