我正在尝试制作一个可执行的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。
答案 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,但他决定不再继续 该项目。