JavaFX程序作为可执行JAR文件的执行方式与Eclipse中不同

时间:2018-08-12 17:34:37

标签: java performance javafx jar executable

我目前正在为朋友制作一个有趣的程序。但是我似乎无法克服困扰我的问题。

我正在创建一些警报对话框,这些对话框在屏幕周围出现10次,并且还在开始时播放歌曲。但是-在eclipse中启动时,所有文本,图片,徽标和歌曲都可以正常工作。尽管当我将项目导出为可执行的JAR文件时,它只打开了所有带有文本的对话框,并且在打开所有对话框之前,这些文本均未出现在任何对话框中。

我做错什么了吗?这是可执行JAR文件的运行方式吗?有没有什么办法解决这一问题? (没有错误)

View project setup here (库打包在生成的JAR中)

整个代码:

package application;

import java.io.File;
import java.util.Random;

import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;

import javafx.application.Application;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.stage.Stage;


public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {

        playSound();

            for(int x = 0; x < 10; x++) {

                Random r = new Random();

                Alert alert = new Alert(AlertType.ERROR);

                ImageView selectedImage = new ImageView();

                Image image = new Image(new File("src/application/ca8.jpg").toURI().toString());

                Stage stage = (Stage) alert.getDialogPane().getScene().getWindow();

                alert.setTitle("text");

                alert.setHeaderText("text");

                alert.setContentText("text");


                selectedImage.setImage(image);

                selectedImage.setFitHeight(100);

                selectedImage.setFitWidth(100);


                stage.getIcons().add(image);


                alert.setGraphic(selectedImage);

                alert.setX(r.nextInt(1500));

                alert.setY(r.nextInt(1000));

                alert.setResizable(false);

                alert.show();
            }
    }


    public static void playSound() {

        try {

            File f = new File("src/application/oofer.wav");

            AudioInputStream audioIn = AudioSystem.getAudioInputStream(f.toURI().toURL());

            Clip clip = AudioSystem.getClip();

            clip.open(audioIn);

            clip.start();

        } catch (Exception ex) {

        }
    }

    public static void main(String[] args) {

        launch(args);
    }
}

0 个答案:

没有答案