[英]Cannot find the path of a file.Why?
我想在“场景生成器”中创建一个类似于“登录”的框,在此处输入图像描述 ,但是当我在主程序中按运行时,它给了我很多错误,我发现(使用调试器)找不到它。 fxml文件的路径。为什么?
这是我的主
public class Main extends Application{
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage = primaryStage;
primaryStage.setTitle("Application");
Scene scene = new Scene(initRootLayout());
primaryStage.setScene(scene);
primaryStage.show();
}
public AnchorPane initRootLayout() {
try {
//Load root layout from fxml file.
FXMLLoader loader = new FXMLLoader();
loader.setLocation(Main.class.getResource("/D:/Faculta/Lab_ISS/src/main/java/view_FXML/Login.fxml"));
AnchorPane rootLayout = (AnchorPane) loader.load();
// BorderPane rootLayout = (BorderPane) loader.load();
return rootLayout;
} catch (IOException e) {
System.out.println("Muie");
}
return null;
}
public static void main(String[] args) {
launch(args);
}
}
在这张照片中可以看到Login.fxml,在此处输入图片描述
而不是/D:/Faculta/Lab_ISS/src/main/java/view_FXML/Login.fxml“,我也尝试过
* D:/Faculta/Lab_ISS/src/main/java/view_FXML/Login.fxml(不带第一个/)
view_FXML / Login.fxml
java / view_FXML / Login.fxml
main / java / view_FXML / Login.fxml
D:\\\\ Faculta \\\\ Lab_ISS \\\\ src \\ main \\\\ java \\\\ view_FXML \\\\ Login.fxml *
将Login.fxml
文件移动到src/main/resources
并使用Main.class.getResource("/Login.fxml");
获取资源Main.class.getResource("/Login.fxml");
路径不正确。 请考虑Class
的JavaDoc,函数getResource
。
查找具有给定名称的资源。 搜索与给定类关联的资源的规则由该类的定义类加载器实现。 该方法委托给该对象的类加载器。 如果此对象是由引导类加载器加载的,则该方法将委托给ClassLoader.getSystemResource(java.lang.String)。 在委派之前,使用以下算法从给定资源名称构造绝对资源名称:
如果名称以'/'('\\ u002f')开头,则资源的绝对名称是名称中'/'之后的部分。
否则,绝对名称的格式如下:modified_package_name / name,其中Modifyed_package_name是此对象的程序包名称,用“ /”代替“。”。 ('\\ u002e')。
从硬编码路径检索资源是有问题的。 而是,创建一个名为“ resource”的源文件夹。 (如何执行此操作取决于您是否使用IDE,也可以在src文件夹中创建该文件夹。)这样,资源将在构建和打包过程中遵循您的代码。
要查找您的资源,请查看ClassLoader类的getResource()方法。 这将在类路径中搜索您指定的路径,并提供一个URL,您可以将其转换为URI。 然后,使用新的File(uri)或类似的方法。
您的问题在于以下部分
Main.class.getResource(String path)
该路径不应是设备上的绝对路径,而应是相对于类路径的路径。 因此,您需要将xml复制到运行项目的相同文件夹中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.