问题
尝试在ClassNotFoundException
内使用自定义控制器时得到Joystick.java
。
这是我的文件层次结构:
--view
----MainWindow.java
----mainWindow.fxml
----Joystick
------Joystick.java
------joystick.fxml
在mainWindow.fxml
中,有以下几行:
<?import view.Joystick.Joystick?>
...
<Joystick fx:id="manualJsk" layoutX="459.0" layoutY="195.0" />
我想显示我的自定义控制器,但是尽管导入了ClassNotFoundException
,但我一直得到它。
有趣的是,如果我将文件移到view
包中,一切都会正常工作:
--view
----MainWindow.java
----mainWindow.fxml
----Joystick.java
----Joystick
------joystick.fxml
...这让我觉得import
不好。为什么会这样?
例外
java.lang.ClassNotFoundException: view.Joystick$Joystick
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at javafx.fxml/javafx.fxml.FXMLLoader.loadTypeForPackage(FXMLLoader.java:2931)
at javafx.fxml/javafx.fxml.FXMLLoader.loadType(FXMLLoader.java:2920)
at javafx.fxml/javafx.fxml.FXMLLoader.importClass(FXMLLoader.java:2861)
... 15 more
编辑: 操纵杆代码:
public class Joystick extends Pane {
public Joystick() {
super();
FXMLLoader loader = new FXMLLoader();
loader.setLocation(getClass().getResource("joystick.fxml"));
loader.setRoot(this);
try {
loader.load();
} catch (IOException e) {
e.printStackTrace();
}
}
}
joystick.fxml
<fx:root xmlns:fx="http://javafx.com/fxml" type="javafx.scene.layout.Pane">
<children>
<Button text="Click Me"/>
</children>
</fx:root>