Как собрать jar

219
24 сентября 2019, 12:30

Написал небольшую програму для десктопа на TornadoFX. Не могу понять как сгенерить jar в IntellJ Idea. Пробовал стандартный способ с генерацией обычного jar-артифакта но они не запускаються(linux говорит что нет манифеста, хотя он был). Опыта с JavaFX и TornadoFX не имел ранее, поэтому прошу любой помощи.

Answer 1

Лучший всего способ переписать проект в Maven.

1 - Создаем Maven-проект (посмотри шаги до "Превращение в веб-проект")
2 - В pom.xml добавляем вот такую структуру:

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.6.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>ЗДЕСЬ.ПИШЕМ.ПУТЬ</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id> <!-- this is used for inheritance merges -->
                        <phase>package</phase> <!-- bind to the packaging phase -->
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

В структуре выше найди ЗДЕСЬ.ПИШЕМ.ПУТЬ. Вместо этого ты пишешь путь к запускаемому классу. К примеру, твой класс находится в java->com->example->Main.java, тогда в мы пишем в pom.xml <mainClass>com.example.Main</mainClass>

Вроде отсюда я копировал данную структуру

Продолжение под картинкой

Далее, в правой части экрана в узкой панели найди Maven.

В ней раскрой Lifecycle и нажми на install.

После install у тебя сгенерируются два файла: просто jar и jar-with-dependencies. Тебе нужен второй файл, если в твоей библиотеке используются дополнительные библиотеки. Найти файлы можно В папке target (эта папка появится над pom.xml)

На этом все! Должно сработать (у меня лично это работает.)

P.S. Это ОФФТОПИК. Посмотри как работать с Maven. Если раньше ты постоянно скачивал jar-библиотеку с инета, потом через артефакты ты ее подключал... В Maven ты просто пишешь зависимость и библиотека сама закачивается в комп и подключается к проекту.

К примеру: https://mvnrepository.com/artifact/org.json/json/20180813

в pom.xml будет записано как:

<dependencies>
    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20180813</version>
    </dependency>
</dependencies>

Посмореть, что данная библиотека закачалась, можно нажав в левой части экрана на External Libraries.

Answer 2

В IntelIJ с помощью комбинации клавиш CTRL+ALT+SHIFT+S попадаем в структуру проекта. Заходим в пункт Artifacts Нажимаем на Add (зеленый плюс), выбираем JAR и пункт from modules with dependencies. В выплывающем окне выбираем главный класс. Жмем ОК, закрываем окно. Выскочит еще одно окно, в котором нажимаем Apply, закрываем это окно. Настройка закончена. Идем в пункт Build Выбираем Build Artifact, затем Build.

Исполняемый файл будет сгенерирован в директории out / Artifacts. Могут возникнуть проблемы если в проекте есть import какого-либо пакета. но этого импорта нет в classpath Если JAR не запускается, войдите в структуру проекта, пункт Modules -> Dependencies -> Add -> Project Libruary -> Attach JAR

Если вдруг Ваше приложение консольное, и Вы хотите запускать его не через консоль, нужно будет создать bat-файл в котором прописать следующую команду

java -jar filename.jar И запускать уже файл.bat.

READ ALSO
-webkit-tap-highlight-color: опасно использовать или нет?

-webkit-tap-highlight-color: опасно использовать или нет?

Недавно узнала про CSS-свойство -webkit-tap-highlight-color, которое позволяет убрать голубоватый фон при тапе на элемент во многих браузерахОднако MDN предупреждает,...

130
Можно ли заинлайнить шрифты otf в тэге style?

Можно ли заинлайнить шрифты otf в тэге style?

Есть задача - динамически сгенерировать строку с html кодом и на основе нее сгенерировать pdf файл (использую пакет html-pdf)Естественно, в этой пдфке...

161
boostrap 4 carousel и backface-visibility

boostrap 4 carousel и backface-visibility

День добрыйЕсть такая проблема: сайт http://roskapstroy

144
Влияет ли блок скрытый через display:none; на скорость загрузки страницы

Влияет ли блок скрытый через display:none; на скорость загрузки страницы

Возможно очень нубский вопрос, но я озадачилсяЕсть 2 блока:

141