Как упаковать приложение javafx с помощью Gradle?

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


person Islam Assem    schedule 23.04.2020    source источник


Ответы (1)


Я предполагаю, что вы используете отдельно загруженную банку 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);
   }
}

И создать банку с 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) }
    }
}

Это следует к делу.

person Luxusproblem    schedule 23.04.2020
comment
Спасибо, это сработало отлично, но сгенерированная банка очень большая, около 50 МБ, и все, что у меня есть, это программа, которая печатает текст на этикетке. - person Islam Assem; 24.04.2020
comment
@Islam Assem, причина может быть в том, что вы включаете модули, которые вам не нужны. Например, Jafaxf.media и т. д. Просто включите то, что вам действительно нужно. Также apache Poi сам по себе очень большой. - person Luxusproblem; 26.04.2020
comment
Хорошо, спасибо, я начну изучать proguard, чтобы получить красный цвет от этих классов. - person Islam Assem; 26.04.2020