2017-06-18 115 views
0

我是java開發新手,我正在製作一個比薩管理系統,但是當我嘗試運行我的可執行文件時.jar文件加載第一頁,但是當我點擊一個選項時它崩潰了,給我以下錯誤。它說沒有找到文件,但我通過文件輸入流導入了我的項目文件夾中的文件,如下所示。我再次在Java程序創建新的有人可以告訴我如何解決這個問題?運行可執行文件.jar文件崩潰/錯誤

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) 

回答

0

您需要在JAR檔案打包你的形象,你的當前補丁源和點無處當你的編譯和打包到罐子工作。

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

更換到

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

文件carryout.jpg必須在同一目錄下的類文件present.Place它resources文件夾,當您使用標準的Java項目文件夾的佈局。

standard java project layout

+0

它工作了謝謝! – z123