2014-12-08 4 views
0

2 일 동안 Spring과 JavaFx로 작성한 프로젝트에서 실행 가능한 jar 파일을 만들려고합니다. 나는 com.zenjava : javafx-maven-plugin, exec-maven-plugin, maven-shade plugin 등과 같은 다른 방법과 플러그인을 사용하여이를 시도했다. spring과 JavaFx를 전개 할 수 있는가? 어떻게 했니?maven for JavaFx8 및 spring을 사용하여 jar 파일을 만드는 방법

수정 된 부분 :

문제점을 발견했습니다. jar 파일에 필요한 스프링 클래스가 존재하지 않았습니다. 그래서 spring-boot-maven-plugin을 추가했는데 모든 것이 정상이었다. Lord Windy에게 많은 감사를드립니다!

+0

http://www.mkyong.com/maven/how-to-create-a-jar-file-with-maven/은 메이븐과 병을 만드는 방법에 대한 자습서입니다. –

+0

본 웹 사이트를 알고 있습니다. 문제는 maven을 사용하는 jar 파일을 만드는 것이 아니라이 jar 파일에 JavaFx 8을 포함시키는 것입니다. –

+0

JavaFX Maven 플러그인 문서 (JavaFX를 패키지하는 방법을 설명하는 것)에 대한 링크를 제공하는 것 외에는 아무도 도움이되지 않는다고 생각합니다. Maven을 사용하는 프로젝트들, 가능합니다.) : http://zenjava.com/javafx/maven/. 특정 문제에 대한 구체적인 지원을 받으려면 대개 [mcve] (http://stackoverflow.com/help/mcve), 환경 정보 및 전체 오류 추적을 질문에 포함시켜야합니다. – jewelsea

답변

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

편집 :

당신은 내가 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> 
+0

내 컴퓨터는 JDK, JRE 1.8을 사용합니다. 나는 그것이 유감스럽게도 JavaFx 8을 말했을 때 분명하다고 생각했습니다. –

+1

나는 정직하게 문제를 이해하지 못한다. FX8은 Java 8에 포함되어있다. 내가 게시 한 링크부터 FX가 Java에 포함되어있다. 번들로 묶을 수 없으며, 가져 오기를 사용하여 소스 파일을 작성하고 사용자가이를 실행할 수 있는지 확인하려면 JRE 사본을 포함하십시오. –

+0

좋아, 이제 내 문제는 Javafx의 포장이 아니라 Javafx의 구조 때문이라고 생각한다. jar 파일을 열려고하면 오류가 발생합니다. 누락 된 JavaFX 응용 프로그램 클래스 com/project/test/App. 3 Fxml 및 3 컨트롤러 (MenuController, LeftController, RightController) 있습니다. 어쩌면 내가 메인 컨트롤러와 함께 메인 fxml을 만들고 다른 모든 3 개의 컨트롤러를 넣어야 만한다. 나는 아직도 어떻게 할 수 있는지 모른다. –