如何使用maven为JavaFx8和spring创建一个jar文件

时间:2014-12-08 23:34:15

标签: eclipse spring maven javafx executable-jar

我试着用我用Spring和JavaFx编写的项目制作一个可执行jar文件。我尝试用不同的方式和插件来实现,比如com.zenjava:javafx-maven-plugin,exec-maven-plugin,maven-shade插件等。 可以部署spring和JavaFx吗?你怎么能这样做?

编辑部分:

我发现了问题。 jar文件中不存在所需的spring类。所以我添加了spring-boot-maven-plugin,之后一切都还可以。非常感谢Lord Windy!

1 个答案:

答案 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>