如何找到 fxml 文件以便我的 JavaFX 项目可以在任何 PC 上轻松运行?
How to locate fxml files so my JavaFX project runs easily on any PC?
编辑:我的代码在我的电脑上运行良好。加载我自己的 FXML 文件没有问题。我希望它也能在其他 PC 上运行。
忽略控制台中的错误,这是查找我的 fxml 文件的错误方法吗?出于某种原因,这不会在另一台 PC 上 运行,因为它无法找到 fxml 文件,尽管我没有提供任何从仅与我的 PC 相关的文件夹名称开始的 URL。
我的意思是所有 fxmlloader url 都从 codingWizard 包开始,然后从那里继续。为什么这在另一台 PC 上不起作用?在我朋友的PC上,当它在桌面上时,它说找不到位置:C:/Users/HisPC/Desktop/..../codingWizard/....等等。
如果这是打包 fxml 文件的错误方法,那么正确的方法是什么,以便我可以为 FXMLLoader 提供 URL,无需调整即可在任何其他 PC 上运行?
您的 FXML 文件是在您发布程序后很可能不会更改的资源。您应该通过 getClass().getResource("/somename.fxml")
;
访问它们
要启用此访问权限,您必须将该文件的位置添加到项目 classpath
这样做的最佳方法是将项目目录结构切换为 标准项目目录布局,正如 apache 所建议的那样项目:https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html
你配置你IDE使用
${project_loc}/src/main/java
和
${project_loc}/src/main/resources
为 "source folder"(从 ${project_loc}/src
中删除 "source folder"-属性)
此更改后,您可以使用以下代码访问文件 ${project_loc}/src/main/resources/my.fxml
:
getClass().getResource("/my.fxml");
您的 IDE 会将 ${project_loc}/src/main/resources
中的所有文件包含到交付工件中。
我是个白痴。 Timothy Truckle 的回答有效。我的原始代码可能也能正常工作,我是个白痴,忘记传输我主 PC 中的图像文件夹。
这就是为什么 FXML 文件夹报错并显示 URL 无效或找不到资源的原因。一直以来,我都认为它指的是 FXML 文件位置,但它指的是图像位置。
编辑:如果我包含图像,我的原始代码可以正常工作。
编辑:我的代码在我的电脑上运行良好。加载我自己的 FXML 文件没有问题。我希望它也能在其他 PC 上运行。
忽略控制台中的错误,这是查找我的 fxml 文件的错误方法吗?出于某种原因,这不会在另一台 PC 上 运行,因为它无法找到 fxml 文件,尽管我没有提供任何从仅与我的 PC 相关的文件夹名称开始的 URL。
我的意思是所有 fxmlloader url 都从 codingWizard 包开始,然后从那里继续。为什么这在另一台 PC 上不起作用?在我朋友的PC上,当它在桌面上时,它说找不到位置:C:/Users/HisPC/Desktop/..../codingWizard/....等等。
如果这是打包 fxml 文件的错误方法,那么正确的方法是什么,以便我可以为 FXMLLoader 提供 URL,无需调整即可在任何其他 PC 上运行?
您的 FXML 文件是在您发布程序后很可能不会更改的资源。您应该通过 getClass().getResource("/somename.fxml")
;
要启用此访问权限,您必须将该文件的位置添加到项目 classpath
这样做的最佳方法是将项目目录结构切换为 标准项目目录布局,正如 apache 所建议的那样项目:https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html
你配置你IDE使用
${project_loc}/src/main/java
和
${project_loc}/src/main/resources
为 "source folder"(从 ${project_loc}/src
中删除 "source folder"-属性)
此更改后,您可以使用以下代码访问文件 ${project_loc}/src/main/resources/my.fxml
:
getClass().getResource("/my.fxml");
您的 IDE 会将 ${project_loc}/src/main/resources
中的所有文件包含到交付工件中。
我是个白痴。 Timothy Truckle 的回答有效。我的原始代码可能也能正常工作,我是个白痴,忘记传输我主 PC 中的图像文件夹。
这就是为什么 FXML 文件夹报错并显示 URL 无效或找不到资源的原因。一直以来,我都认为它指的是 FXML 文件位置,但它指的是图像位置。
编辑:如果我包含图像,我的原始代码可以正常工作。