Иконка для приложения в JavaFX

Хочу заменить стандартную иконку в программе, но при запуске выдает ошибки, подскажите, пожалуйста, как исправить. Картинка для иконки 128х128 пикселей, 35.6КБ, расширение .ICO

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.stage.Stage;
import java.io.IOException;

public class HelloApplication extends Application {
    @Override
    public void start(Stage stage) throws IOException {
//  Иконка
//  Image(getClass().getResourceAsStream("logo_128_128.ico")));
//  Image ico = new Image("resources/Image/logo_128_128.ico"); stage.getIcons().add(ico);
            FXMLLoader fxmlLoader = new FXMLLoader(HelloApplication.class.getResource("hello-view.fxml"));
            Scene scene = new Scene(fxmlLoader.load(), 1280, 720);
//  Иконка
            stage.getIcons().add(new Image(this.getClass().getResourceAsStream("/logo_128_128.ico")));
            stage.setTitle("calculation");
            stage.setScene(scene);
    }
    public static void main(String[] args) {
        launch();
    }
} 

Ответы (3 шт):

Автор решения: Qwer

Насколько я знаю javaFX поддерживает расширения jpeg, png, gif, bmp. Попробуйте сохранить картинку в одном из них. Перед ссылкой на картинку добавьте "file:". Т.е. в общем виде это должно выглядеть так Image image = new Image("file:ВАШ_ПУТЬ")

→ Ссылка
Автор решения: Сергей Иванович

Иконка в src/main/resources/?

Тогда:

stage.getIcons().add(
    new Image(HelloApplication.class.getResourceAsStream("/logo_128_128.ico")));

Пример кода:

import java.io.IOException;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class HelloApplication extends Application {
    @Override
    public void start(Stage stage) throws IOException {
        FXMLLoader fxmlLoader = new FXMLLoader(
            HelloApplication.class.getResource("hello-view.fxml"));
        Scene scene = new Scene(fxmlLoader.load(), 1280, 720);
        //  Иконка
        stage.getIcons().add(new Image(HelloApplication
             .class.getResourceAsStream("/logo_128_128.ico")));
        stage.setTitle("calculation");
        stage.setScene(scene);
    }
    public static void main(String[] args) {
        launch();
    }
}
→ Ссылка
Автор решения: Kolhoznik

Я так сделал и работает:

stage.getIcons().add(new Image(Objects.requireNonNull(
    this.getClass().getResourceAsStream("/images/icon.png"))));
→ Ссылка