Я очень новичок в 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 для создания проекта, все в состоянии по умолчанию.