2017-12-23 15 views
1

プログラムの実行中にJavaFXでFXMLコードに混乱するエラーが発生しました。命名
まず1:
javaFxでTARGETINVOCATIONEXCEPTIONを解決するには?

<?xml version="1.0" encoding="UTF-8"?> 

<?import javafx.scene.*?> 
<?import javafx.geometry.*?> 
<?import javafx.scene.control.*?> 
<?import java.lang.*?> 
<?import javafx.scene.layout.*?> 
<?import javafxapplication5.FXMLDocumentController ?> 
<GridPane fx:controller = "FXMLDocumentController" hgap="10.0" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="100.0" prefWidth="600.0" vgap="10.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"> 
    <columnConstraints> 
     <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> 
     <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> 
    </columnConstraints> 
    <rowConstraints> 
     <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> 
     <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> 
     <RowConstraints maxHeight="20.0" minHeight="8.0" prefHeight="8.0" vgrow="SOMETIMES" /> 
     <RowConstraints maxHeight="12.0" minHeight="0.0" prefHeight="0.0" vgrow="SOMETIMES" /> 
     <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> 
     <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> 
    </rowConstraints> 
    <children> 
     <Label text="Choose gender:" /> 
     <RadioButton mnemonicParsing="false" text="Female" GridPane.rowIndex="2"> 
      <toggleGroup> 
       <ToggleGroup fx:id="gender" /> 
      </toggleGroup> 
     </RadioButton> 
     <RadioButton mnemonicParsing="false" selected="true" text="Male" toggleGroup="$gender" GridPane.rowIndex="1" /> 
     <Button mnemonicParsing="false" onAction="" onMouseClicked="#BClickedActionHandler" text="OK" GridPane.rowIndex="4" /> 
    </children> 
    <padding> 
     <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" /> 
    </padding> 
</GridPane> 

第二のファイル名は次のとおりです:含まれていFXMLDocumentController.java:次のコードが含まれていF2XML.fxml
私は3つのファイルを持っている

package javafxapplication5; 

import java.net.URL; 
import java.util.ResourceBundle; 
import javafx.fxml.FXML; 
import javafx.fxml.Initializable; 
import javafx.scene.control.Button; 
import javafx.scene.control.RadioButton; 

public class FXMLDocumentController implements Initializable { 
    @FXML 
    RadioButton Male; 
    @FXML 
    RadioButton Female; 
    @FXML 
    Button OK; 

    @Override 
    public void initialize(URL url, ResourceBundle rb) { 
     // TODO 
    } 

    @FXML 
    public void BClickedActionHandler() { 
     System.out.println("Hello"); 
    } 

} 

第3のものは、JavaFXApplication5.javaです。これは含まれています。私は次のコードで苦しんでいたプログラム実行している場合

package javafxapplication5; 

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

public class JavaFXApplication5 extends Application { 

    @Override 
    public void start(Stage stage) throws Exception { 
     Parent root = null; 
     Scene scene = null; 
     FXMLLoader loader = new FXMLLoader(getClass().getResource("F2XML.fxml")); 
     loader.setController(new FXMLDocumentController()); 
     Pane mainPane = loader.load(); 
     scene = new Scene(root); 
     stage.setScene(scene); 
     stage.show(); 

    } 

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

} 

Executing D:\Java\JavaFXApplication5\dist\run1638782428\JavaFXApplication5.jar using platform C:\Program Files\Java\jdk1.8.0_151\jre/bin/java 
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$154(LauncherImpl.java:182) 
    at java.lang.Thread.run(Thread.java:748) 
Caused by: javafx.fxml.LoadException: 
file:/D:/Java/JavaFXApplication5/dist/run1638782428/JavaFXApplication5.jar!/javafxapplication5/F2XML.fxml 

    at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2543) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441) 
    at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409) 
    at javafxapplication5.JavaFXApplication5.start(JavaFXApplication5.java:23) 
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$161(LauncherImpl.java:863) 
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$174(PlatformImpl.java:326) 
    at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(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$147(WinApplication.java:177) 
    ... 1 more 
Caused by: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[2,1] 
Message: Premature end of file. 
    at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:604) 
    at javax.xml.stream.util.StreamReaderDelegate.next(StreamReaderDelegate.java:88) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2513) 
    ... 12 more 
Exception running application javafxapplication5.JavaFXApplication5 
Java Result: 1 

を誰かがこのエラーを解決する上で役立つことはできますか?

答えて

0

それはすぐそこにスタックトレースで言う:

Caused by: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[2,1] 
Message: Premature end of file. 

パーサはそれがあることを期待ようなあなたの入力ファイルではないことを意味しています。ファイルをXMLエディタまたはInternet Explorerにロードして、ファイルが有効なXMLであるかどうかを確認します。

0

InvocationTargetExceptionsは、コンパイル時に未知のコードが実行されるメソッドでスローされます。そのため、メソッドによってスローされた例外は、throws節で宣言することも、呼び出し時にキャッチすることもできません。したがって、スタックトレースを "ダウン"して、関連する "原因"ブロックを探す必要があります。

この場合には、解析されたXMLが壊れているように思わ

Caused by: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[2,1] 
Message: Premature end of file. 

です。あなたの質問で提供したXMLをチェックしたところ、私と(そしてそのようなエラーの場合には不平を言うInternet Explorerに)うまく見えました。

Caused by: javafx.fxml.LoadException: 
file:/D:/Java/JavaFXApplication5/dist/run1638782428/JavaFXApplication5.jar!/javafxapplication5/F2XML.fxml 

あなたがここで提供XMLは、実際にそれはあなたが最後の「上」の例外ブロックの中で見ることができるように読まれたのJarファイル内に存在するXMLであることを確認します

ファイルシステム内にXMLがありますが、JavaFXApplication5.jarの後に対応するクラスパスエントリがあり、エラーの理由として間違ったXMLがあるとします。

関連する問題