我使用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(). getresourcesstream ()。否则,您可以使用System.getProperty("user.dir").
的工作目录路径。主目录System.getProperty("home.dir")也经常被使用:例如"/NetbeansProjects"用于NetbeansIDE.