首页 > 解决方案 > gradle项目中的输入流不能为空异常

问题描述

我有主课

public class MainClass extends Application {

    @Override
        public void start(Stage primaryStage) {

            try{
                Image img = new Image(getClass().getResourceAsStream(".\\build\\resources\\main\\img\\h1.jpg"));
                System.out.println("ok");
            }
            catch(Exception ex){
                System.out.println(ex.getMessage());
            }
        }

    public static void main(String[] args) {
        launch(args);
    }
}

我的图像在\build\resources\main\img\h1.jpg目录中

我的项目文件:

我的项目文件

当我运行项目时,它给出输入流不能为空异常。

标签: androidimagegradleexceptionjavafx

解决方案


资源路径没有被分隔,\而且它们从资源根开始。在这种情况下,"/img/h1.jpg"假设您的 IDE 在运行时正确包含类路径中的资源,则路径应该可以解决问题。

getResource( AsStream) 不通过文件路径访问数据;数据可能根本不作为文件提供,而是作为 JAR 文件中的条目提供。如果您需要引用未包含在类路径中的文件,请使用File's 功能转换为 URI 或使用FileInputStream:

new Image(new File(".\\build\\resources\\main\\img\\h1.jpg").toURI().toString())

推荐阅读