gpt4 book ai didi

java - 替代 Java6 中的 java.nio.file.Paths

转载 作者:行者123 更新时间:2023-11-29 03:13:37 26 4
gpt4 key购买 nike

由于 java.nio.file.Paths 类及其包在 Java6 和 Android 中不存在,我想知道如何为 Paths.get("filename").toUri() 使用替代方法.toURL()?我尝试在 JavaFX 中使用 FXMLLoader 加载一个 fxml 文件。通常我将所有 fxml 文件放在 src 目录中的特定布局包中,这样可以很容易地通过相对路径加载这些文件。但是,因为我为 Android 构建 JavaFX 项目,我需要将 fxml 文件存储到 assets 目录中,以便它自动包含在 apk 文件中(使用 gradle build)。

到目前为止,这是我的项目结构:

MyProject
-- src\main\java\somepackage\Main.java
-- assets\sample_layout.fxml

但是,当我构建 apk 时,结构如下所示:

Content of MyProject.apk
-- assets\sample_layout.fxml
-- classes.dex // which contains all compiled classes
-- somepackage\Main.java

我需要从 Main.java 访问 assets 目录中的 sample_layout.fxml。知道我该怎么做吗?

以下是在 Java7 上有效但不适用于 Java6 的内容(并且在 Android 上无效,因为 Paths 类在 Java6 中不可用):

URL myFxmlLayout= Paths.get("assets/sample_layout.fxml").toUri().toURL();
FXMLLoader loader = new FXMLLoader(myFxmlLayout);
AnchorPane page = (AnchorPane) loader.load();

对于 Java6,我尝试了以下方法,但不起作用:

URL myFxmlLayout= new URI("file:///assets/sample_layout.fxml").toURL();
// OR
URL myFxmlLayout= new URI("file:///../../../../assets/sample_layout.fxml").toURL();

希望你能帮助我。

最好的问候,迈克尔

最佳答案

事实上,路径的使用从一开始就在设计技术上是错误的。 FXML 源最好作为只读资源打包在 jar 中。

MyProject
-- src\main\java\somepackage\Main.java
-- src\main\resources\assets\sample_layout.fxml

URL myFxmlLayout= Main.class.getResource("/assets/sample_layout.fxml");

在您的原始设计中,您可以改用 new File(...),但随后必须处理到 assets 的路径(getAbsolutePath ),以及它的运行时安装。

关于java - 替代 Java6 中的 java.nio.file.Paths,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27903117/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com