[英]How to use Paths(java.nio.file.Paths) in nashorn javascript
[英]Alternative to java.nio.file.Paths in Java6
由于Java6和Android中不存在java.nio.file.Paths类及其包,因此我想知道如何为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上无效 ( 在Android6上则不能,因为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();
希望您能够帮助我。
最好的问候,迈克尔
实际上,一开始使用Paths在设计技术上是错误的。 最好将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
),以及它的运行时安装。
你可以做
new File(filename).toURI().toURL()
我从未使用过JavaFX和Android,因此尚未在您描述的上下文中对此进行测试,但这是您使用的Paths.get(...)
惯用语的java.nio
版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.