【发布时间】:2023-03-27 07:30:01
【问题描述】:
我有以下代码:
package test;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class SWTTest {
public static void main(String[] args) {
SWTTest test=new SWTTest(new Display());
test.run();
}
private Shell shell;
private Display display;
public SWTTest(Display main_display) {
display=main_display;
shell=new Shell(display, SWT.DIALOG_TRIM);
shell.setText("Test window");
shell.setBackgroundImage(new Image(display,"./image/blue_screen.jpg"));
}
public void run() {
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
}
}
这是编译和运行。问题是当我将其导出为 jar 文件时。
只是为了确保我做得正确:
右键单击项目->导出...->可运行 Jar 文件->选择正确的启动配置,然后“完成”。
它创建了一个 jar 文件,但是当我从终端运行它时,我得到:
Exception in thread "main" org.eclipse.swt.SWTException: i/o error (java.io.FileNotFoundException: ./image/blue_screen.jpg (No such file or directory))
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.graphics.ImageLoader.load(Unknown Source)
at org.eclipse.swt.graphics.ImageDataLoader.load(Unknown Source)
at org.eclipse.swt.graphics.ImageData.<init>(Unknown Source)
at org.eclipse.swt.graphics.Image.<init>(Unknown Source)
at test.SWTTest.<init>(SWTTest.java:31)
at test.SWTTest.main(SWTTest.java:13)
Caused by: java.io.FileNotFoundException: ./image/blue_screen.jpg (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:146)
at java.io.FileInputStream.<init>(FileInputStream.java:101)
at org.eclipse.swt.internal.Compatibility.newFileInputStream(Unknown Source)
... 6 more
为什么它在 Eclipse 上运行,而不是作为 jar 文件?
怎么突然找不到图了?
(我还要提到我在项目中添加了新的源文件夹并将其命名为“image”,它现在位于“src”文件夹旁边 - 我想说的是“image”文件夹是我的 Eclipse 项目中的源文件夹)。
那么我在这里错过了什么?
【问题讨论】:
-
从路径中删除前导
./。 -
因为你需要使用类加载器来获取你的文件。在 Eclipse 中,您正在滥用代码运行爆炸的事实。
-
@BoristheSpider,这是什么意思:“代码运行爆炸”? m0skit0,试过了,在eclipse里也没用。
标签: java filenotfoundexception