最近我尝试在 Eclipse 中的 JavaFx Maven 项目中使用将图片添加到标签。如果我在 Eclipse 中运行该应用程序,一切正常并且不会发生错误。这篇文章不同于:“为什么相对路径在 JAR 文件中的 JAVA 中不起作用?” 邮政!我尝试了这篇文章的解决方案,但它对我不起作用。我在下面描述了这一点。如果我从 Linux 终端运行应用程序,java -jar myapplication.jar则会出现以下错误:Exception in Application start methodjava.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)Exception running application de.elastic.client.Main我将错误定位在图片的文件导入中。对于导入,我使用了以下代码:FileInputStream input = new FileInputStream("path/picture.png");Image image = new Image(input);Label img1 = new Label();img1.setGraphic(new ImageView(image));我还尝试将 imageUrl 直接提供给 Image 类,例如Image image = new Image(imageUrl);. 这在我以前的项目中有效。我也尝试过Image image = new Image(getClass().getResourceAsStream(imageUrl));,但这里 eclipse 抛出了错误Cannot make a static reference to the non-static method getClass() from the type Object。关于这一点我也试过了Image image = new Image(Main.class.getResource(imageUrl).toExternalForm();。对我来说,它只能以这种方式执行而不会出错。
1 回答
小唯快跑啊
TA贡献1863条经验 获得超2个赞
我自己找到解决方案。maven项目的文件系统和代码的排列有问题。错误是在[right click] > configure > convert to maven project
. 这导致程序的文件系统中缺少一些文件夹。现在可以简单地引用文件。
解决方案是创建一个新的 Maven 项目并从旧项目中迁移所有内容。比它对我有用。干杯!
添加回答
举报
0/150
提交
取消