我得到以下结构:
project |---+build |---+dist |---+nbproject |----src |-------client |----------stuff |-------------controller |----------------DefaultController.java |-------------files |-------------fxml |----------------DefaultFXML.fxml |-------------img |-------------lib |---------------ContentManager.java |-------------root |---------------StartClass.Java |---+build.xml |---manifest.mf
我在 ContentManager 中设置 fxml 文件,例如:
public static final String
DEFAULT_SCREEN_FXML = "../fxml/Default.fxml";
但我总是遇到 nullPointerException。我不想使用绝对路径。那么如何找出相对路径呢? 设置 fxml 文件的 Controller 是否正确:
fx:id="client.stuff.controller.DefaultController"
??
最佳答案
部署应用程序时,通常会创建一个包含类文件和所有资源的 jar 文件。您需要从 jar 文件内部加载 fxml 文件,即作为资源。在这种情况下,路径元素“..”实际上没有任何意义。
使用
public static final String
DEFAULT_SCREEN_FXML = "/client/stuff/fxml/Default.fxml";
(路径相对于类路径)。
当然还要加载它
FXMLLoader loader = new FXMLLoader(getClass().getResource(DEFAULT_SCREEN_FXML));
或类似的东西。
关于javafx找到正确的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23188511/