javafx包标准

new9mtju  于 2021-07-07  发布在  Java
关注(0)|答案(1)|浏览(350)

我想知道是否有JavaFX应用程序的包标准,因为当我部署我的应用程序时,会抛出几个错误,比如找不到fxml位置、找不到数据库等等

hfwmuf9z

hfwmuf9z1#

可能是您没有正确设置fxml文件路径和/或数据库文件路径。
如果java类和相关的fxml文件在同一个文件夹中,您可以这样调用它们:
控制器.java

new FXMLLoader(getClass().getResource("ControllerLayout.fxml"));

控制器布局.fxml

<BorderPane xmlns="http://javafx.com/javafx/" xmlns:fx="http://javafx.com/fxml/1" fx:controller="Controller">

假设布局在layouts文件夹中,控制器在parent folder names main中。那么它应该是这样的:
控制器.java

new FXMLLoader(getClass().getResource("layouts/ControllerLayout.fxml"));

控制器布局.fxml

<BorderPane xmlns="http://javafx.com/javafx/" xmlns:fx="http://javafx.com/fxml/1" fx:controller="main.Controller">

数据库文件也是如此。但由于不能将db文件放入可运行jar中,因此必须动态获取db path。
在主类中运行此代码以获取运行时的绝对路径。

public class Main extends Application 
{
   public static String PATH;

    @Override
    public void start(Stage primaryStage)
    {
        Path p = Paths.get(Main.class.getProtectionDomain().getCodeSource().getLocation().toURI());
        Path folder = p.getParent();
        PATH = folder.toString();     
    }
}

假设您将数据库文件放在名为“db”的文件夹中。调用此行以获取数据库的绝对路径

String dbpath = "jdbc:sqlite:" + Main.PATH + "/db/mydatabase.db";

相关问题