問題
VisualStudioCodeで、CodeRunnerを使用して
JavaFxのSourceを実行しようとすると
途中でハングする。
解消するためには、VisualStudioCodeの
再立ち上げを必要とする。
画面
環境
Windows Pro 10 1903
VisualStudioCode 1.48.0
Javac 1.8.0_192
ErrorMessage全文
PS C:\UserData\VisualStudioCodeWorkSpace\JavaFx01>
cd "c:\UserData\VisualStudioCodeWorkSpace\JavaFx01" ;
if ($?) { javac Basic01.java } ; if ($?) { java Basic01 }
javafx.fxml.LoadException:
/C:/UserData/VisualStudioCodeWorkSpace/JavaFx01/Basic01.fxml:12
at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601)
at javafx.fxml.FXMLLoader.access$700(FXMLLoader.java:103)
at javafx.fxml.FXMLLoader$ValueElement.processAttribute(FXMLLoader.java:922)
at javafx.fxml.FXMLLoader$InstanceDeclarationElement.processAttribute(FXMLLoader.java:971)
at javafx.fxml.FXMLLoader$Element.processStartElement(FXMLLoader.java:220)
at javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:744)
at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2707)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2527)
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 Basic01.start(Basic01.java:12)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$8(LauncherImpl.java:863)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$7(PlatformImpl.java:326)
at com.sun.javafx.application.PlatformImpl.lambda$null$5(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$6(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$4(WinApplication.java:186)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: Basic01CTL
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at javafx.fxml.FXMLLoader$ValueElement.processAttribute(FXMLLoader.java:920)
... 22 more
Basic01.java
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
public class Basic01 extends Application
{
@Override
public void start(Stage primaryStage)
{try
{
BorderPane root = (BorderPane)FXMLLoader.load(getClass().getResource("Basic01.fxml"));
Scene scene = new Scene(root);
scene.getStylesheets().add(getClass().getResource("Basic01.css").toExternalForm());
primaryStage.setTitle("Basic01");
primaryStage.setScene(scene);
primaryStage.show();
}
catch(Exception e) {e.printStackTrace();}
}
public static void main(String[] args)
{
launch(args);
}
}
Basic01CTL.fmlx
<?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.control.Button?> <?import javafx.scene.control.Label?> <?import javafx.scene.control.TextField?> <?import javafx.scene.layout.BorderPane?> <?import javafx.scene.layout.Pane?> <?import javafx.scene.text.Font?><BorderPane xmlns="http://javafx.com/javafx/8.0.192" xmlns:fx="http://javafx.com/fxml/1" fx:controller="Basic01CTL">
<center> <Pane prefHeight="200.0" prefWidth="322.0" BorderPane.alignment="CENTER"> <children> <Button layoutX="33.0" layoutY="145.0" mnemonicParsing="false" onAction="#Click1" text="Button1" /> <Button layoutX="125.0" layoutY="145.0" mnemonicParsing="false" onAction="#Click2" text="Button2" /> <Label fx:id="label" layoutX="34.0" layoutY="41.0" text="Label"> <font> <Font size="24.0" /> </font></Label> <TextField fx:id="textfield" layoutX="35.0" layoutY="87.0"> <font> <Font size="18.0" /> </font></TextField> </children> </Pane> </center> </BorderPane>Basic01CTL.java
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
public class Basic01CTL
{
@FXML private TextField textfield;
@FXML private Label label;
@FXML protected void Click1(ActionEvent evt) { label.setText("Button 1 pushed"); } @FXML protected void Click2(ActionEvent evt) { String s = new String(textfield.getText()); label.setText("Input = "+s); }
}
関連質問
「VisualStudioCodeのErrorMessageが理解不能」
投稿 2020/08/17 18:25
同一Sourceで発生しました。
原因は、CodeRunnerの使用法の間違いのようでした。
あなたの回答
tips
プレビュー