時,我有以下代碼:FileNotFoundException異常運行jar文件
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項目中的Source文件夾)。
那麼我在這裏錯過了什麼?
從路徑中刪除前導'。/'。 – m0skit0
因爲您需要使用類加載器來獲取您的文件。在Eclipse中,濫用代碼運行爆炸的事實。 –
@BoristheSpider,它是什麼意思:「代碼運行爆炸」? m0skit0,試過了,即使在月食中也不行。 –