动态加载JavaFX窗格作为插件

时间:2016-07-21 08:42:39

标签: java javafx

我正在尝试开发JavaFX应用程序。我已经创建了一个插件系统。我的应用程序由一个GridPane组成,有4个地方,我想插入4个AnchorPanes。

我希望这个AnchorPanes成为插件。我有以下架构:

My Application
  + src
       + controller
       + view
       + Main.java
  + res
  + lib
  + plugin
       + plugin.jar
           + plugin
               + Controller.java
               + view.fxml

我想用一个加载器动态调用我的插件。

FXMLLoader loader = new FXMLLoader();
loader.setLocation(new URL(path));
pane = loader.load();

如果我不接触任何内容,我会收到以下错误:

java.lang.ClassNotFoundException: plugin.Controller

如果我右键单击我的.jar并选择" Add as library"在我的IDE中,它完美运行。但是,我想动态添加我的插件,所以我不能做这个操作。我认为这是ClassPath的一个问题,但我不知道如何解决它。

1 个答案:

答案 0 :(得分:0)

最好加载插件主类和主方法然后你可以加载fxml文件,它也将加载fxml的控制器。 最后将窗格对象(FXML NODE)返回到基础应用程序。