我正在尝试制作一个可执行的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 \发行版”
它显示以下错误:“无法找到类:i.lunin.autoposting.Main”
请帮我在netbeans,gradle下制作一个可执行jar .
1 回答
我最近遇到了同样的问题 . 对我来说,它原来是构建系统 .
如果我通过gradle和javafx在32位jvm上构建我的应用程序,则会导致同样的错误 .
如果我在64位系统上构建它,一切都很顺利 . 所以我认为部署自包含的32位java应用程序仍然存在问题 . 我用Java 7测试过它 .