使用JavaFx插件制作可执行jar用于gradle

时间:2013-08-10 05:44:35

标签: javafx gradle executable-jar netbeans-7.3

我正在尝试制作一个可执行的jar。 我的IDE是Netbeans 7.3.1,使用Gradle插件进行Netabeans,使用JavaFX plugin进行Gradle。

简单的JavaFX应用程序:

i.lunin.autoposting.Main:

package i.lunin.autoposting;

import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class Main extends Application {
    public static void main(String[] args) {
        launch(args);
    }
    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("Hello World! Man!");
        Button btn = new Button();
        btn.setText("Say 'Hello World'");
        btn.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                try {
                    Thread.sleep(5000);
                } catch (InterruptedException ex) {
                    Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
                }
                System.out.println("Hello World!");
            }
        });

        StackPane root = new StackPane();
        root.getChildren().add(btn);
        primaryStage.setScene(new Scene(root, 300, 250));
        primaryStage.show();
    }
}

Gradle文件:

的build.gradle:

apply from: "http://dl.bintray.com/content/shemnon/javafx-gradle/0.3.0/javafx.plugin"
apply plugin: 'java'

sourceCompatibility = '1.7'
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'

repositories {
    mavenCentral()
}

dependencies {
}

group = 'i.lunin.autoposting'
version = '0.0.0'

javafx {
    mainClass = 'i.lunin.autoposting.Main'
}

当我使用gradle run时,它在我的IDE中完美运行;但是如果没有IDE我就无法启动它。

当我使用gradle :jfxDeploy它表示已完成。

之后,当我尝试从

启动可执行jar时

“... TestJava \ build \ distributions”

它显示以下错误:“无法找到类:i.lunin.autoposting.Main”

请帮我在netbeans下制作一个可执行jar,gradle。

2 个答案:

答案 0 :(得分:0)

我最近遇到了同样的问题。对我来说,它原来是构建系统 如果我通过gradle和javafx在32位jvm上构建我的应用程序,则会导致同样的错误。
如果我在64位系统上构建它,一切都很顺利。 所以我认为部署自包含的32位java应用程序仍然存在问题。我用Java 7测试了它。

答案 1 :(得分:0)

似乎存在一个更新的插件,看起来非常有前景:

从资源库README:

  

使用javafx-gradle-plugin可以增强您的build-script   javapackager-power。不再使用Apache Ant调用,因为这   gradle-plugin包装了所有调用,并介绍了变通办法和修复程序   尚未修复的JDK错误。这个gradle插件是一个方便的包装   javapackger,因此您必须访问官方文档以   了解每个操作系统的要求。

     

为什么此gradle-plugin存在?

     

仅需要一些等效的javafx-maven-plugin   gradle,这个项目诞生了。你们中很多人可能已经使用过   Danno Ferrin的javafx-gradle-plugin,但他决定不再继续   该项目。

https://github.com/FibreFoX/javafx-gradle-plugin上查看