我试着用我用Spring和JavaFx编写的项目制作一个可执行jar文件。我尝试用不同的方式和插件来实现,比如com.zenjava:javafx-maven-plugin,exec-maven-plugin,maven-shade插件等。 可以部署spring和JavaFx吗?你怎么能这样做?
编辑部分:
我发现了问题。 jar文件中不存在所需的spring类。所以我添加了spring-boot-maven-plugin,之后一切都还可以。非常感谢Lord Windy!
答案 0 :(得分:0)
我现在可以把它作为一个答案,因为你给了我一个神奇的词'JavaFX 8'。 As of Java 7 update 6 Javafx包含在JRE中。因此,如果要在没有JavaFX的计算机上包含JavaFX,则需要将JRE与Jar捆绑在一起。 In which case, this here explains how to bundle the JRE
编辑:
您似乎遇到了实际项目的问题,而不是Java的东西,所以我用accompanying Jar for you.
完成了一个小示例项目package local.brown;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
/**
* Created by Sam on 12/8/2014.
*/
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("TraderRL");
Parent root = null;
FXMLLoader loader = new FXMLLoader();
root = loader.load(getClass().getResource("fxml_game.fxml").openStream());
WindowController dc = loader.getController();
dc.setLabel("New");
Scene myScene = new Scene(root);
primaryStage.setScene(myScene);
primaryStage.show();
dc.setLabel("New22");
}
public static void main(String[] args){
launch(args);
}
}
这是你正在谈论的控制器
package local.brown;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.canvas.Canvas;
import javafx.scene.control.Label;
import java.net.URL;
import java.util.ResourceBundle;
/**
* Created by Sam on 12/9/2014.
*/
public class WindowController implements Initializable {
@FXML private Label label;
@FXML private Canvas canvas;
public void setLabel(String s){
label.setText(s);
}
public void initialize(URL url, ResourceBundle rb) {
}
}
我认为您将使用的FXML文档。
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.canvas.Canvas?>
<BorderPane id="BorderPane" xmlns:fx="http://javafx.com/fxml" fx:controller="local.brown.WindowController">
<top>
<HBox style="-fx-background-color: #336699;">
<Label fx:id="label" text="Page Title"/>
</HBox>
</top>
<center>
<Canvas fx:id="canvas" width="1024" height="768" />
</center>
</BorderPane>