2017-10-02 13 views
0

私はthese steps to create a maven project with JavaFX in intelliJに続きました。IntelliJランタイム例外でMavenを使用したJavaFXプロジェクト

しかし、ランタイム例外でプロジェクトの成果を実行している:

Exception in Application start method 
java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389) 
    at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767) 
Caused by: java.lang.RuntimeException: Exception in Application start method 
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917) 
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$155(LauncherImpl.java:182) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.NullPointerException: Location is required. 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3207) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3175) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3148) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3124) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3104) 
    at javafx.fxml.FXMLLoader.load(FXMLLoader.java:3097) 
    at Valor.CM.Main.start(Main.java:13) 
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863) 
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326) 
    at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294) 
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) 
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 

私が探して、メインクラスを変更しようとしたが、何も今のところ動作するようには思えません。

Main.java:

package Valor.CM; 

import javafx.application.Application; 
import javafx.fxml.FXMLLoader; 
import javafx.scene.Parent; 
import javafx.scene.Scene; 
import javafx.stage.Stage; 

public class Main extends Application { 

    @Override 
    public void start(Stage primaryStage) throws Exception{ 
     Parent root = FXMLLoader.load(Main.class.getResource("sample.fxml")); 
     primaryStage.setTitle("Hello World"); 
     primaryStage.setScene(new Scene(root, 300, 275)); 
     primaryStage.show(); 
    } 


    public static void main(String[] args) { 
     launch(args); 
    } 
} 

Controller.java:

package Valor.CM; 

public class Controller { 
} 

sample.fxml:

<?import javafx.geometry.Insets?> 
<?import javafx.scene.layout.GridPane?> 

<?import javafx.scene.control.Button?> 
<?import javafx.scene.control.Label?> 
<GridPane fx:controller="Valor.CM.Controller" 
      xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10"> 
</GridPane> 

のpom.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>Valor.CM</groupId> 
    <artifactId>StopServiceTester</artifactId> 
    <version>1.0-SNAPSHOT</version> 


</project> 
+2

sample.fxmlのパスが正しくありません:Valor.CM.Main.start(Main.java:13): – duffymo

+0

正しいパスは何ですか? 今はMainクラスとControllerクラスと同じ場所にあります。 –

+1

私が聞いた質問は、別の方法を使ってプロジェクトを作り直したので、もはや私にとって重要ではありません。 私は単にこのコマンドを実行し、mvnプロジェクトをintelliJにインポートしました: 'mvn archetype:generate -DarchetypeGroupId = com.zenjava -DarchetypeArtifactId = javafx-basic-archetype' –

答えて

0

あなたがリソースを見つけるために

Main.class.getResource("sample.fxml") 

を使用しているので。 sample.fxmlを、プロジェクトのsrc > mainディレクトリにあるresourcesという名前のフォルダに移動さ​​せる必要があります。

+0

ファイルを移動しましたが、 –

+0

@AlexWeitz 'Main.class'が' src> main> java'フォルダにあることを確認し、同様にsample.fxmlが 'src> main> resource'にあることを確認してください。これをデバッグする別の方法は、sample.fxmlのファイルプロパティで取得できる '/ Users/some/folder/some/other/path/to/sample.fxml'のようなディレクトリのリソースへの完全なパスを使用することです。 – nullpointer

+1

申し訳ありませんが、私は問題を解決することができず、最終的にプロジェクトを作成するための別の方法で行った: 'mvn archetype:generate -DarchetypeGroupId = com.zenjava -DarchetypeArtifactId = javafx-basic-archetype' –

関連する問題