2017-05-09 43 views
-3

我在java中创建了一个程序并将其导出到可执行文件.jar文件,但是当我尝试运行它时,它不会打开,如果我尝试在命令提示符下运行它,以下例外。它在日食上运行得非常好。为什么不是我的.jar文件工作

Exception in Application start method 
java.lang.reflect.InvocationTargetException 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:498) 
at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389) 
at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:498) 
at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767) 
Caused by: java.lang.RuntimeException: Exception in Application start 
method 
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917) 
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$155(LauncherImpl.java:182) 
at java.lang.Thread.run(Thread.java:745) 
Caused by: java.io.FileNotFoundException: back.jpg (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 memoryMaster.memoryMaster.start(memoryMaster.java:58) 
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863) 
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326) 
at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295) 
at java.security.AccessController.doPrivileged(Native Method) 
at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294) 
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) 
Exception running application memoryMaster.memoryMaster 
下面

是我的所作所为将影像导入到我的项目

public void start(Stage primaryStage) throws FileNotFoundException { 

    FileInputStream input = new FileInputStream("back.jpg"); // initializing 
                   // new 
                   // fileinoutstream. 
    FileInputStream one = new FileInputStream("1.png"); // initializing new 
                 // fileinoutstream. 
    FileInputStream two = new FileInputStream("2.jpg"); // initializing new 
                 // fileinoutstream. 
    FileInputStream three = new FileInputStream("3.jpg"); // initializing 
                  // new 
                  // fileinoutstream. 
    FileInputStream four = new FileInputStream("4.png"); // initializing new 
                  // fileinoutstream. 
    FileInputStream five = new FileInputStream("5.png"); // initializing new 
                  // fileinoutstream. 
    FileInputStream six = new FileInputStream("6.png"); // initializing new 
                 // fileinoutstream. 
    FileInputStream seven = new FileInputStream("7.png"); // initializing 
                  // new 
                  // fileinoutstream. 
    FileInputStream eight = new FileInputStream("8.png"); // initializing 
                  // new 
                  // fileinoutstream. 

    image = new Image(input); // initializing new image object 

    iv.add(new Image(one)); // adding image to arrayList. 
    iv.add(new Image(two)); // adding image to arrayList. 
    iv.add(new Image(three)); // adding image to arrayList. 
    iv.add(new Image(four)); // adding image to arrayList. 
    iv.add(new Image(five)); // adding image to arrayList. 
    iv.add(new Image(six)); // adding image to arrayList. 
    iv.add(new Image(seven)); // adding image to arrayList. 
    iv.add(new Image(eight)); // adding image to arrayList. 
    iv.add(iv.get(0)); // adding image to arrayList. 
    iv.add(iv.get(1)); // adding image to arrayList. 
    iv.add(iv.get(2)); // adding image to arrayList. 
    iv.add(iv.get(3)); // adding image to arrayList. 
    iv.add(iv.get(4)); // adding image to arrayList. 
    iv.add(iv.get(5)); // adding image to arrayList. 
    iv.add(iv.get(6)); // adding image to arrayList. 
    iv.add(iv.get(7)); // adding image to arrayList. 

    score.setText("Score = " + scoreKpr); // setting text to score. 
    for (int i = 0; i < 16; i++) { 
     back.add(new ImageView(image)); // adding image to arrayList. 
    } 
+2

你看这条线'造成的:java.io.FileNotFoundException:back.jpg(没有这样的文件或目录)'? –

+0

你是如何加载'back.jpg'的?我注意到有时资源加载器在IDE和jar中运行时有点棘手。 – MaxPower

+0

根本原因是*“由:java.io.FileNotFoundException:back.jpg引起(没有这样的文件或目录)”*,*“我在java中创建了一个程序并将其导出为可执行文件.jar”*向我建议'back.jpg'在应用上下文中(在src目录下),并且你使用'File'直接引用它(包括'src'路径)。一旦嵌入,您不能再使用File来加载Jar中包含的资源,您需要使用'Class#getResource'来代替。如果文件没有嵌入,那么该文件必须相对于程序执行的位置存在 – MadProgrammer

回答

0

FileInputStream意味着更多地从文件系统中获取文件。如果你想和他们在jar文件中使用它们尝试

this.getClass().getResourceAsStream(); 
+0

而不是this.get ...我可以使用另一种方法,因为它们都在主类中。 – z123

+0

你可以使用'ClassName.class.getResourceAsStream();' – MaxPower

相关问题