我在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.
}
你看这条线'造成的:java.io.FileNotFoundException:back.jpg(没有这样的文件或目录)'? –
你是如何加载'back.jpg'的?我注意到有时资源加载器在IDE和jar中运行时有点棘手。 – MaxPower
根本原因是*“由:java.io.FileNotFoundException:back.jpg引起(没有这样的文件或目录)”*,*“我在java中创建了一个程序并将其导出为可执行文件.jar”*向我建议'back.jpg'在应用上下文中(在src目录下),并且你使用'File'直接引用它(包括'src'路径)。一旦嵌入,您不能再使用File来加载Jar中包含的资源,您需要使用'Class#getResource'来代替。如果文件没有嵌入,那么该文件必须相对于程序执行的位置存在 – MadProgrammer