2016-12-29 18 views
0

では見られない私は、JavaFXアプリケーションを作成していますので、当然、私のようなリソースフォルダにsample.fxmlを入れて、それと並んでMavenのフレームワークを使用している: enter image description hereのJavaFX:無効なURLまたはリソースのMaven

私のコードが到達するにもかかわらず、それでも

は、この例では、それはFXMLファイルがその場所に存在することを受け入れることを拒否し、文字通り、それは仕事をした以前のプロジェクトのカーボンコピーです:

public class Main extends Application { 

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


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

それは吐きますこれは:

Exception in thread "main" 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: javafx.fxml.LoadException: 
/C:/Users/David/IdeaProjects/FXRpg/target/classes/fxml/sample.fxml 

    at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2579) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3214) 
    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 sample.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) 
    at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191) 
    ... 1 more 
Caused by: java.lang.IllegalArgumentException: Invalid URL: Invalid URL or resource not found 
    at javafx.scene.image.Image.validateUrl(Image.java:1118) 
    at javafx.scene.image.Image.<init>(Image.java:620) 
    at sample.Controller.initialize(Controller.java:31) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2548) 
    ... 17 more 
Caused by: java.lang.IllegalArgumentException: Invalid URL or resource not found 
    at javafx.scene.image.Image.validateUrl(Image.java:1110) 
    ... 20 more 

POMファイルはどちらか何かを変更しません:@Robertで共有リンクからの回答に詳述されているように、パスはローダーのために正しいと思われるあなたのsample.fxmlではないよう

<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>groupId</groupId> 
    <artifactId>JavaFxApplication</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
    <dependencies> 
     <dependency> 
      <groupId>org.mongodb</groupId> 
      <artifactId>mongo-java-driver</artifactId> 
      <version>3.0.2</version> 
     </dependency> 
    </dependencies> 
</project> 
+0

をそれを始めますか? target/classes/fxmlにsample.fxmlが含まれているかどうか確認できますか? そうでなければ、mavenはそれをコンパイルしませんでした:)(IntelliJはこれを/に置き換えている可能性があります) –

+0

リソースフォルダを再定義しているような、投稿する価値のあるものはありますか? – weston

+0

詳細な回答はこちら [リソースフォルダ内のjavafx fxmlファイルの参照方法?](http://stackoverflow.com/questions/19602727/how-to-reference-javafx-fxml-files-in-resource-folder) –

答えて

0

を、と思われます。これらの手順

FXMLLoader loader = new FXMLLoader(); 
loader.setLocation(getClass().getResource("/main.fxml")); 
Parent content = loader.load(); 

であなたのリソースの読み込み一部を分割してみてくださいもしそうなら、あなたは障害がgetResourceloadでもないでしょうでしょう。おそらくそれをデバッグする正しい方法です。また、.fxmlの何が間違っているかを見るには、ファイルの内容を調べる必要があります。

ソースからHow to reference javafx fxml files in resource folder?

0

今、私は好奇心旺盛です。私はIntelliJ:Maven、fmxlサブディレクトリ内のプロジェクトをビルドしました。次のMain.javaが機能しました。

public class Main extends Application { 

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

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

}

私はリソースファイルを移動した場合、私は別のエラーメッセージが出ます:

Caused by: java.lang.NullPointerException: Location is required. 
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3207) 

万全を期すために:どのようにPOM

<?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>JavaFXApplication</groupId> 
<artifactId>JavaFXApplication</artifactId> 
<version>1.0-SNAPSHOT</version> 

関連する問題