首页 / JAVA / JAVAFX:位置未设置错误
JAVAFX:位置未设置错误
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JAVAFX:位置未设置错误,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2239字,纯文字阅读大概需要4分钟。
内容图文
![JAVAFX:位置未设置错误](/upload/InfoBanner/zyjiaocheng/717/c4cffa4d95d040ccae85815f35c32a70.jpg)
我的项目在eclipse中正常运行但是当我创建这个项目的jar文件并尝试通过cmd运行时,它显示“Location not set set”错误.
我的项目结构是:
方法是(在eclipse中运行):
@FXML
private void RegularCustomer(ActionEvent event) throws Exception{
Stage stage = (Stage) dailySales.getScene().getWindow();
Scene scene = dailySales.getScene();
FXMLLoader loader = new FXMLLoader(getClass().getResource("../customer/CustomerHome.fxml"));
System.out.println(loader.getLocation());
scene.setRoot(loader.load());
stage.setScene(scene);
stage.show();
}
这段代码有什么问题?
有一些相关问题,但它们有所不同.他们的代码不在IDE中运行,但我的代码在IDE中运行.
仅供参考:我对文件夹结构进行了一些更改,并且能够成功运行.但是这种结构很糟糕,因为我把所有的FXML文件和控制器放在同一个包中.
解决方法:
当您使用getClass().getResource(…)时,您正在加载资源,而不是指定文件的路径.在类加载器从文件系统加载类的情况下,这些基本上等同于同一个东西,它确实有效(尽管那时它没有技术原因).当类加载器通过其他机制加载类时(并且可能在所有情况下都可能),那么注意Java specifications for a resource是很重要的.
特别注意:
Resources, names, and contexts
A resource is identified by a string consisting of a sequence of
substrings, delimited by slashes (/), followed by a resource name.
Each substring must be a valid Java identifier. The resource name is of the form shortName or shortName.extension. Both shortName
and extension must be Java identifiers.
(我的重点.)由于..不是有效的Java标识符,因此无法保证此资源可解析.碰巧文件系统类加载器以您期望的方式解析它,这就是它在IDE中工作的原因,但是jar类加载器中的getResource(…)的实现并没有以您希望的方式实现它.
尝试
FXMLLoader loader = new FXMLLoader(getClass().getResource("/sm/customer/CustomerHome.fxml"));
使用控制器位置加载FXML:
既然你已经组织了你的代码,以便每个FXML与相应的控制器文件在同一个包中(我认为这是一种明智的做事方式),你也可以利用它加载FXML:只需加载FXML“相对于它的控制器“:
FXMLLoader loader = new FXMLLoader(CustomerHomeCtrl.class.getResource("CustomerHome.fxml"));
这在此设置中看起来相当自然,编译器将检查您在导入类时是否正确使用CustomerHomeCtrl的包名称.它还使重构变得容易:例如,假设您想将sm.admin拆分为多个子包.在Eclipse中,您将创建子包,将FXML和控制器拖放到相应的子包中,并且import语句将自动更新:不需要进一步更改.在getResource(…)中指定路径的情况下,所有这些都必须手动更改.
内容总结
以上是互联网集市为您收集整理的JAVAFX:位置未设置错误全部内容,希望文章能够帮你解决JAVAFX:位置未设置错误所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。