Как упаковать приложение javafx с помощью Gradle? - PullRequest
1 голос
/ 23 апреля 2020

У меня есть сборка приложения javafx с Gradle, и я использую внешнюю библиотеку apache poixml и мне нужно создать jar для него, и он не запускается при использовании примера проекта классов poi xml для того, что я пробовал на github: https://github.com/IslamAssem/HelloFX-Gradle

1 Ответ

1 голос
/ 23 апреля 2020

Я предполагаю, что вы используете отдельно загруженный jar OpenJFX14 и включили его в путь сборки.

Я бы добавил JavaFX к вашим зависимостям через Gradle ..


dependencies {
    implementation 'org.apache.poi:poi:4.1.1'
    implementation 'org.apache.poi:poi-ooxml:4.1.1'
    testCompile group: 'junit', name: 'junit', version: '4.12'


    // here starts JavaFX
    implementation 'org.openjfx:javafx:14'

    compile 'org.openjfx:javafx-base:14'
    compile 'org.openjfx:javafx-graphics:14'
    compile 'org.openjfx:javafx-controls:14'
    compile 'org.openjfx:javafx-fxml:14'
    compile 'org.openjfx:javafx-swing:14'
    compile 'org.openjfx:javafx-media:14'
    compile 'org.openjfx:javafx-web:14'
}

Тогда я бы порекомендовал, чтобы ваш Main не входил в класс, выходящий за пределы Application.

Вы должны создать Launcher.


public class Launcher{

   public static void main(String[] args){
     Application.launch(HelloFX.class,args);
   }
}

И чтобы построить Jar с JavaFX ...

Добавьте это в свой build.gradle:


jar {
    manifest {
        attributes(
                'Main-Class': 'your.main.package.Launcher' // replace with you main class
        )
    }
    from {
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }
}

Это должно быть в сделке.

...