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