我尝试使用以下代码将FXML文件加载到JavaFX控制器中:
loader.setLocation(BaseController.class.getResource("/baseLayout.fxml"));
baseLayout = loader.load();
但是我得到了这个例外:
java.lang.IllegalStateException: Location is not set.
问题是getResource
没有正确加载FXML,因此setLocation
接收null
作为参数,我得到运行loader.load()
我在那里的一些答案中看到的是,问题可能在于getResource中的错误路径。但是,据我所知," /baseLayout.fxml"应该指向资源文件夹中的相应fxml文件。
这是我的项目文件树:
- 项目/
- 的src /
- 主/
- 的java /
- 资源/
- baseLayout.fxml
它不应该起作用吗?我实际上工作得很好,但突然之间没有。我不知道还能做什么。
答案 0 :(得分:0)
您可以尝试像这样加载fxml
loader.setLocation(BaseController.class.getResource("/resources/baseLayout.fxml"));
或
loader.setLocation(BaseController.class.getResource("../resources/baseLayout.fxml"));
但在此之前,正如@James_D所述请检查天气,生成的jar包含资源文件夹i:天气是否存在于构建中。