簡體   English   中英

Java應用程序可以從netbeans正常運行,但不能從命令行或.jar文件運行

[英]Java application works fine from netbeans but not the command line or a .jar file

我使用netbeans創建了一個應用程序,當我從netbeans運行它時,它的運行效果非常好,但是當我嘗試從命令行或可執行的.jar文件運行它時,它就無法工作! 而且這個錯誤在我看來:

Dec 12, 2011 11:36:33 PM game.Threads.Intro_main <init>
SEVERE: null
javax.imageio.IIOException: Can't read input file!
        at javax.imageio.ImageIO.read(Unknown Source)
        at game.Threads.Intro_main.<init>(Intro_main.java:58)
        at game.Intro.<init>(Intro.java:28)
        at game.Start.<init>(Start.java:25)
        at game.Start.main(Start.java:35)

Exception in thread "main" java.lang.NullPointerException
        at sun.awt.CustomCursor.<init>(Unknown Source)
        at sun.awt.windows.WCustomCursor.<init>(Unknown Source)
        at sun.awt.windows.WToolkit.createCustomCursor(Unknown Source)
        at game.Threads.Intro_main.<init>(Intro_main.java:69)
        at game.Intro.<init>(Intro.java:28)
        at game.Start.<init>(Start.java:25)
        at game.Start.main(Start.java:35)

我認為問題出在命令行,而.jar不能確定我在應用程序中加載的圖像的真實路徑,因此我不知道避免此問題的正確方法。

我知道這里有很多關於這個問題的問題,但是我不知道真正的解決方案,我嘗試了很多答案,但是它們沒有用!

謝謝您的合作 :)

避免這種情況的最佳方法是將要使用的圖像打包到.jar文件中。 然后使用類加載器加載圖像。

javax.imageio.ImageIO.read(getClass().getResourceAsStream("myImage.png"));

要解決此問題,只需通過Winrar存檔程序將jar文件提取到文件夾中。 然后查看結果。.您的外部文件將不存在。.因此,您必須將外部文件與jar文件放在同一文件夾中。 而且NullPointerException問題出來了,是無法正確初始化jar文件。您必須設置具有main方法的Main類。

如果使用只讀圖像,則可以將其保留在jar中,並使用URL getClass()。getResource()或InputStream getClass()。getResourceAsStream() 否則,可以通過System.getProperty(“ user.dir”)使用工作目錄的路徑。

通常也使用主目錄System.getProperty(“ home.dir”) :例如,對於NetbeansIDE,使用“ / NetbeansProjects”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM