Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java6中java.nio.file.path的替代方案_Java_Android_Javafx_Classloader - Fatal编程技术网

Java6中java.nio.file.path的替代方案

Java6中java.nio.file.path的替代方案,java,android,javafx,classloader,Java,Android,Javafx,Classloader,由于java.nio.file.Paths类及其包在Java6和Android中不存在,我想知道如何为path.get(“filename”).toUri().tour()使用另一种方法?我尝试使用JavaFX中的FXMLLoader加载fxml文件。通常,我将所有fxml文件放在src目录中的特定布局包中,这使得通过相对路径加载这些文件变得很容易。但是,因为我为Android构建了JavaFX项目,所以我需要将fxml文件存储到assets目录中,这样它就会自动包含在apk文件中(使用grad

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

这是我目前的项目结构:

MyProject
-- src\main\java\somepackage\Main.java
-- assets\sample_layout.fxml
Content of MyProject.apk
-- assets\sample_layout.fxml
-- classes.dex // which contains all compiled classes
   -- somepackage\Main.java
URL myFxmlLayout= new URI("file:///assets/sample_layout.fxml").toURL();
// OR
URL myFxmlLayout= new URI("file:///../../../../assets/sample_layout.fxml").toURL();
但是,当我构建apk时,结构如下所示:

MyProject
-- src\main\java\somepackage\Main.java
-- assets\sample_layout.fxml
Content of MyProject.apk
-- assets\sample_layout.fxml
-- classes.dex // which contains all compiled classes
   -- somepackage\Main.java
URL myFxmlLayout= new URI("file:///assets/sample_layout.fxml").toURL();
// OR
URL myFxmlLayout= new URI("file:///../../../../assets/sample_layout.fxml").toURL();
我需要从
Main.java
访问
assets
目录中的
sample\u layout.fxml
。你知道我怎么做吗

以下是在Java7上工作的内容,但不适用于Java6(在Android上也不适用,因为Paths类在Java6中不可用):

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

MyProject
-- src\main\java\somepackage\Main.java
-- assets\sample_layout.fxml
Content of MyProject.apk
-- assets\sample_layout.fxml
-- classes.dex // which contains all compiled classes
   -- somepackage\Main.java
URL myFxmlLayout= new URI("file:///assets/sample_layout.fxml").toURL();
// OR
URL myFxmlLayout= new URI("file:///../../../../assets/sample_layout.fxml").toURL();
希望你能帮助我

致以最良好的祝愿, 迈克尔

你能行

new File(filename).toURI().toURL()
我从未使用过JavaFX和Android,所以我没有在您描述的上下文中测试过,但它是
java.nio
之前版本的
path.get(…)
习惯用法。

您可以这样做

new File(filename).toURI().toURL()

我从来没有使用过JavaFX和Android,所以我没有在您描述的上下文中测试过这一点,但它是
java.nio
之前版本的
path.get(…)
习惯用法。

事实上,路径的使用从一开始就在技术上是错误的。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");

在最初的设计中,您可以使用
新文件(…)
,但随后必须注意
资产的路径(
getAbsolutePath
),以及它的运行时安装。

事实上,路径的使用从一开始就是技术上错误的设计。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");

在您最初的设计中,您可以使用
新文件(…)
,但必须注意
资产的路径(
getAbsolutePath
),以及它的运行时安装。

嘿,James,这可以作为JavaFX项目在本地运行该项目(注意:
新文件(filename).tour()
将是正确的方法,但不推荐使用,因此它的工作方式与Java7中的path.get(…)相同。但是,它可以无错误地构建,但到目前为止它没有在Android上运行,因为它没有排除我尝试过的相对路径:-/我认为
。/../assets/sample\u layout.fxml
应该是正确的路径,但它不起作用。有什么想法吗?根据我问题中列出的apk结构,对文件路径有什么建议吗?提前感谢。嘿,James,这可以作为JavaFX项目在本地运行该项目(注意:
新文件(filename).tour()将是正确的方式,但不推荐使用,因此它与Java7中的path.get(…)的工作方式相同)。但是,它可以无错误地构建,但到目前为止它没有在Android上运行,因为它没有排除我尝试过的相对路径:-/我认为
。/../assets/sample\u layout.fxml
应该是正确的路径,但它不起作用。有什么想法吗?根据我问题中列出的apk结构,对文件路径有什么建议吗?提前谢谢,太好了!在我的Android设备上就像一个符咒一样工作:)但是,它在我的桌面上不工作,因为它无法从该目录中找到fxml文件。你知道如何让它同时在Android和桌面上运行吗?我考虑提供两个路径,一个用于Android设备,另一个用于桌面版本,然后检查可以找到哪个文件。简单的方法是在eclipse中使用
src/main/resources
作为
源文件夹
。然后,您可以使用
src\main\resources\assets\sample\u layout.fxml中的布局在桌面上运行它,并且在为Android构建它时它仍在工作:)太棒了!在我的Android设备上就像一个符咒一样工作:)但是,它在我的桌面上不工作,因为它无法从该目录中找到fxml文件。你知道如何让它同时在Android和桌面上运行吗?我考虑提供两个路径,一个用于Android设备,另一个用于桌面版本,然后检查可以找到哪个文件。简单的方法是在eclipse中使用
src/main/resources
作为
源文件夹
。然后您可以使用
src\main\resources\assets\sample\u layout.fxml
中的布局在桌面上运行它,并且在为Android构建它时它仍在工作:)