【发布时间】:2019-04-30 12:05:40
【问题描述】:
我是 javafx 的新手,在使用代码教程进行测试时得到了java.lang.reflect.InvocationTargetException:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class Main extends Application {
public static final String IMAGE_NAME = "groceries.jpg";
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
Scene scene = new Scene(setupScene(), 300, 300);
primaryStage.setScene(scene);
primaryStage.setTitle("Image Screen");
primaryStage.show();
}
StackPane setupScene() {
StackPane root = new StackPane();
ImageView imageView = new ImageView();
imageView.setPreserveRatio(true);
imageView.setSmooth(true);
Image image = new Image(getClass().getClassLoader().getResource(IMAGE_NAME).toString());
imageView.setImage(image);
root.setPrefSize(250, 250);
imageView.setFitHeight(root.getPrefHeight());
imageView.setFitWidth(root.getPrefWidth());
root.getChildren().add(imageView);
return root;
}
}
异常是由java.lang.NullPointerException在Image image = new Image(getClass().getClassLoader().getResource(IMAGE_NAME).toString());行引起的
图像文件在我的项目文件夹中,但似乎没有加载。我能够使用Image image = new Image(new File(IMAGE_NAME).toURI().toURL().toString()) 获取图像,但是当我切换回Image image = new Image(getClass().getClassLoader().getResource(IMAGE_NAME).toString()) 时,它就无法正常工作。
有人知道我的程序为什么会这样吗?任何想法将不胜感激...
编辑:我的图像文件在 src 文件夹的同一级别:
- projectfolder
- groceries.jpg
- src
- Main.java
我正在使用 IntelliJ JavaFX Application 创建项目,一切都处于默认状态。
【问题讨论】:
-
图片在项目中的位置?
-
运行应用时工作目录是类路径根目录吗?
标签: javafx nullpointerexception invocationtargetexception