运行可执行文件.jar文件崩溃/错误

时间:2017-06-18 08:35:35

标签: java eclipse javafx filenotfoundexception

我是java开发的新手,我正在制作比萨饼管理系统但是当我尝试运行我的可执行文件.jar文件时,第一页加载但是当我点击一个选项时它会崩溃并给我以下错误。它说文件未找到,但我通过文件输入流导入了我的项目文件夹中的文件,如下所示。再一次,我是java程序创建的新手,有人可以告诉我如何解决这个问题吗?

public void CarryOrDeli() throws FileNotFoundException {
    Stage option = new Stage();
    GridPane gp = new GridPane();
    gp.setPadding(new Insets(0, 100, 0, 0));

    for (int i = 0; i < 6; i++) {
        gp.getColumnConstraints().add(new ColumnConstraints(165)); // column
                                                                    // is
                                                                    // wide
    }

    for (int i = 0; i < 7; i++) {
        gp.getRowConstraints().add(new RowConstraints(200)); // column 1 is
                                                                // // 50
                                                                // wide
    }
    // <------------------------------------------------------->
    // getting images from files.
    FileInputStream one = new FileInputStream("carryout.jpeg");
    FileInputStream two = new FileInputStream("delivery.jpeg");

    // converting to a viewable node image
    Image c = new Image(one);
    Image d = new Image(two);
    ImageView carryout = new ImageView(c);
    ImageView delivery = new ImageView(d);

    Text title = new Text("       Chose Carryout or Delivery");
    title.setFill(Color.BLUE);
    title.setStyle("-fx-font: 24 arial;");

    carryout.setFitWidth(100);
    carryout.setFitHeight(100);

    delivery.setFitWidth(100);
    delivery.setFitHeight(100);

    gp.add(carryout, 2, 1);
    gp.add(delivery, 4, 1);
    gp.add(title, 2, 0, 3, 1);

错误

java.io.FileNotFoundException: carryout.jpeg (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at main.MainScrn.CarryOrDeli(MainScrn.java:313)
at main.MainScrn.lambda$0(MainScrn.java:85)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
at javafx.event.Event.fireEvent(Event.java:198)
at javafx.scene.Scene$ClickGenerator.postProcess(Scene.java:3470)
at javafx.scene.Scene$ClickGenerator.access$8100(Scene.java:3398)
at javafx.scene.Scene$MouseHandler.process(Scene.java:3766)
at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3485)
at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762)
at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2494)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:380)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:294)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$354(GlassViewEventHandler.java:416)
at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:415)
at com.sun.glass.ui.View.handleMouseEvent(View.java:555)
at com.sun.glass.ui.View.notifyMouse(View.java:937)

1 个答案:

答案 0 :(得分:0)

您需要将您的图像打包到jar存档中,当前的补丁在源代码中工作,并在编译和打包到jar时指向无处。

FileInputStream one = new FileInputStream("carryout.jpeg");
FileInputStream two = new FileInputStream("delivery.jpeg");

替换为

InputStream stream = this.getClass().getResourceAsStream("\carryout.jpg"); 

文件carryout.jpg必须位于存在类文件的同一目录中。当您使用标准java项目文件夹布局时,将其放在resources文件夹中。

standard java project layout