Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.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
Java 无法加载图像获取空指针异常_Java_Javafx - Fatal编程技术网

Java 无法加载图像获取空指针异常

Java 无法加载图像获取空指针异常,java,javafx,Java,Javafx,我正在尝试将“照片”文件夹中的图像添加到列表中。列表已初始化,照片的相对路径正确。PhotographicGame是写入此方法的类的名称。当该方法尝试将图像“添加”到列表中时,我不断得到一个空指针异常。 救命 我还有一个案例,我使用了这个精确的方法,没有任何问题 private List<Image> populateList() { photoList.add(new Image(PhotographicGame.class.getResourceA

我正在尝试将“照片”文件夹中的图像添加到列表中。列表已初始化,照片的相对路径正确。PhotographicGame是写入此方法的类的名称。当该方法尝试将图像“添加”到列表中时,我不断得到一个空指针异常。 救命

我还有一个案例,我使用了这个精确的方法,没有任何问题

    private List<Image> populateList()
    {
        photoList.add(new Image(PhotographicGame.class.getResourceAsStream("photographs/faces/face1.jpg"), 200, 400, true, true));
        return photoList;
    }

首先,上面的字符串没有闭合。我假设它在您的实际代码中

检查图像是否位于类路径上的该位置。我有一个类似的问题,因为我忘了将我的映像部署到我的compiled classes文件夹中,准备构建到一个JAR中

您可能需要在前面添加一个正斜杠,以便从类路径的根引用它。否则,它可能试图从调用类中定位该相对路径。请看这里:

我尝试了以下测试:

package test.game;

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.stage.Stage;

public class MainApp extends Application {
    @Override
    public void start(Stage stage) {
        Image image = new Image(MainApp.class.getResourceAsStream("photos/faces/Sunset01.jpg"), 400, 200, true, true);
        ImageView imageView = new ImageView();
        imageView.setImage(image);

        Group group = new Group(imageView);
        Scene scene = new Scene(group, 800, 600);

        stage.setScene(scene);
        stage.setTitle("Main App");
        stage.show();
    }
}

我将MainApp.java文件放在test/game中,将Sunset01.jpg放在test/game/photos/faces中。而且效果很好。因此,一定是图像加载、复制到输出目录、运行时类路径或照片列表初始化(例如,
List photoList=new ArrayList();
)有问题。

我尝试添加正斜杠,但没有解决问题。能否将项目结构添加到问题中?检查图像是否实际位于您所引用的类路径上。是的,我100%确保它位于该类路径上,正在访问的文件夹位于PhotographicGame类的同一文件夹中。但请确保它已复制到您的输出目录。并尝试从类路径的根引用它:
/full/qualified/path/to/PhotographicGame/photographies/faces/face1.jpg
。如果这不起作用,那么它可能没有被复制到您的输出目录中?它是否说:
java.lang.NullPointerException:输入流不能为null
?如果是,那么jpg没有找到,如果不是,那么
photoList
没有初始化并且为空。这一点很好。值得将其分解成更小的行。首先获取流,然后创建图像。然后将其添加到您的列表中。看看哪里失败了。我想这可能是因为您的路径有问题,或者在路径上找不到资源。我确实将其分解了,而我一直得到的错误是“photoList.add(image);”行中的一个简单的空指针异常否,您需要初始化它,例如List photoList=new ArrayList()@每天,我建议你拿起一本书,研究它,以及这本书。
package test.game;

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.stage.Stage;

public class MainApp extends Application {
    @Override
    public void start(Stage stage) {
        Image image = new Image(MainApp.class.getResourceAsStream("photos/faces/Sunset01.jpg"), 400, 200, true, true);
        ImageView imageView = new ImageView();
        imageView.setImage(image);

        Group group = new Group(imageView);
        Scene scene = new Scene(group, 800, 600);

        stage.setScene(scene);
        stage.setTitle("Main App");
        stage.show();
    }
}